C++中继承类的构造函数
Posted
技术标签:
【中文标题】C++中继承类的构造函数【英文标题】:Constructor of a inherited class in C++ 【发布时间】:2013-07-01 10:22:31 【问题描述】:我正在做一个包含两个类的项目:证据和图像(证据之子)
Evidence 的构造函数是:
Evidence(A* a, B* b, C* c);
继承类Image的构造函数为:
Image(A* a, B* b, C* c): Evidence(a,b,c)... code...
编译器向我抛出以下错误:
In file included from src/evidence/Image.cpp:8:
src/evidence/Image.h:22: error: no matching function for call to
'Evidence::Evidence(A*&, B*&, C*&)'
src/evidence/Evidence.h:35: note: candidates are: Evidence::Evidence(A*, B*, C*)
src/evidence/Evidence.h:21: note: Evidence::Evidence(const Evidence&)
怎么了?我很困惑,以至于我伤害了自己。
【问题讨论】:
您的错误显示为“(A*&, B*&, C*&)”,因此您需要发布导致错误的确切代码。 这不是您遇到的确切错误:注意最后一条消息:“src/evidence/Image.h:22: error: expected `' at end of input” 你可能有代码中的额外大括号,或类似的东西。 @Baltasarq 这是一个复制粘贴错误...这不影响。 @doctorlove 错误恰好出现在该行...在 cpp 文件中构造函数的定义中。 请创建一个sscce,像这里sscce.org 【参考方案1】:你声明了你的Evidence
构造函数,但你实际上没有定义它。
替换:
Evidence(A* a, B* b, C* c);
与:
Evidence(A* a, B* b, C* c)
【讨论】:
对不起,我只是将构造函数的声明发布在 .h 在 cpp 文件中,构造函数被定义为进行属性分配。以上是关于C++中继承类的构造函数的主要内容,如果未能解决你的问题,请参考以下文章