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