只有纯虚拟函数的类中的构造函数会导致派生类中的错误
Constructors in class with only pure virtual functions causes errors in derived classes
我有一个抽象类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();
};
cpp
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>";
}
当我向IPrinter
添加构造函数或析构函数时,我在HtmlPrinter
的构造函数中得到一个错误,该构造函数使用IPrinter*
。为什么我不能向IPrinter
添加构造函数/析构函数?
错误消息:
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:Usersdarrindocumentsvisual studio 2013ProjectsShapeStoreShapeStoreHtmlPrinter.obj ShapeStore
我在你的代码中没有发现任何错误。检查一下
<script src="http://ideone.com/e.js/1HWcfn" type="text/javascript" ></script>
http://ideone.com/1HWcfn
相关文章:
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- C++如果采用类类型的函数被传递派生类型,有没有办法给出错误?
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 返回派生类型时出现协变类型错误
- 错误:基类在从基类父派生类 Son 时未定义
- 通过基类引用派生类后打印的错误值
- 尝试删除指向派生对象的基指针时断言错误
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 由于从 std::map 派生的类中的 std::map 迭代器导致的内存错误
- 如何修复派生类给出错误'declaration has no storage class or type specifier'?
- 简单派生类上的Linux GCC链接错误
- 通过参考将派生的类传递给运算符会产生错误
- 使用从WINRT网格类派生的抽象类时,Casttobase未解决的外部符号错误
- 尝试通过基类指针访问派生的类成员函数将导致什么样的错误
- 在派生类CTOR中接收基类副本是错误的吗?
- 在向量中使用派生的可移动但不可压缩的会导致编译错误
- 为什么当我有两个函数时编译器没有显示错误,一个将采用基类,一个将派生类作为参数
- 错误C2509:成员函数未在派生类中声明
- C 错误将派生的元素传递到方法
- 在基类指针向量中,如何访问派生的类成员返回错误