Serg89
@Serg89
Изучаю. Читаю.

Как использовать чисто виртуальный метод внутри класса?

Пытаюсь определить родительский класс :
#ifndef OBJECT_H
#define OBJECT_H
#include <sstream>
#include <string>


class Object
{
private :
    virtual void fillBufferForPrint(std::ostringstream &strs) = 0;
public:
    Object();

    operator std::string();

};

#endif // OBJECT_H


#include "object.h"

Object::Object()
{

}

Object::operator std::string() {
    std::ostringstream s;
    fillBufferForPrint(&s);
    return s.str();
}


При попыткке собрать проект выдается ошибка :
***/object.cpp:10: error: no matching function for call to 'Object::fillBufferForPrint(std::ostringstream*)'
     fillBufferForPrint(&s);
                          ^


Чем это можно побороть?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@Alexander1705
В объявлении метод принимает ссылку, а вы передаёте указатель.
fillBufferForPrint(&s); // Нужно не так.
fillBufferForPrint(s);  // А так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы