Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类中只有纯虚函数的构造函数会在派生类中导致错误_C++_Inheritance - Fatal编程技术网

C++ 类中只有纯虚函数的构造函数会在派生类中导致错误

C++ 类中只有纯虚函数的构造函数会在派生类中导致错误,c++,inheritance,C++,Inheritance,我有一个抽象类,IPrinter,它只包含纯虚函数 using namespace std; class IPrinter { public: virtual void Print() =0; virtual void Print(string) = 0; virtual void SetStreamData(string) =0; private: IStreamBehavior* streamBehavior; string _name; }; 以及

我有一个抽象类,
IPrinter
,它只包含纯虚函数

using namespace std;
class IPrinter
{
public:
    virtual void Print() =0;
    virtual void Print(string) = 0;
    virtual void SetStreamData(string) =0;
private:
    IStreamBehavior* streamBehavior;
    string _name;
};
以及实现它的类

class HtmlPrinter :
    public IPrinter
{
public:
    HtmlPrinter();
    HtmlPrinter(IPrinter*);
    ~HtmlPrinter();
    virtual void Print();
    virtual void Print(string);
    vector<string> GetPrintList();
    virtual void SetStreamData(string);
private:
    IPrinter* printer;
    string streamData;
    void Paragraph();
};

我没有发现你的代码有任何错误。请检查一下


您为什么不向我们提供错误消息?另外,别忘了虚拟析构函数,我建议您通过const引用传递这些字符串。“我有一个错误”-我们应该猜猜那是什么吗?这类游戏已经有点晚了。看起来你声明了构造函数,但没有实现它。或者可能您没有在构建中包含实现它的文件。(另外,您应该给基类一个虚拟析构函数。)@wootscootinboogie:它没有链接,因为您声明了构造函数,但没有实现它。我不知道为什么(或者是否)它需要一个;是你宣布的。如果您想让它做一些事情(可能是初始化成员变量),那么就实现它。如果你没有,那么就不要声明它。@wootscootinboogie:你必须实现所使用的每一个函数。当派生类的构造函数调用构造函数来初始化其基对象时,会(隐式)使用构造函数。
HtmlPrinter::HtmlPrinter()
{
}
//error on this line
HtmlPrinter::HtmlPrinter(IPrinter* printer) :printer(printer){}

void HtmlPrinter::Print()
{
    this->printer->Print();
}
void HtmlPrinter::Print(string s)
{

}
vector<string> HtmlPrinter::GetPrintList()
{
    vector<string> myStrings;
    return myStrings;
}
void HtmlPrinter::SetStreamData(string streamData)
{
    this->streamData = streamData;
}
HtmlPrinter::~HtmlPrinter()
{
}
void HtmlPrinter::Paragraph()
{
    string old = streamData;
    streamData += "<p>" + old += "</p>";
}
Error   2   error LNK2019: unresolved external symbol "public: __thiscall 

    IPrinter::IPrinter(void)" (??0IPrinter@@QAE@XZ) referenced in function "public: __thiscall HtmlPrinter::HtmlPrinter(class IPrinter *)" (??0HtmlPrinter@@QAE@PAVIPrinter@@@Z)    C:\Users\darrin\documents\visual studio 2013\Projects\ShapeStore\ShapeStore\HtmlPrinter.obj ShapeStore