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++中继承类的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

在 C++0x 中继承构造函数

C++ 中类的构造函数理解

C++中派生类的构造函数怎么显式调用基类构造函数?

c++类的构造函数

如何在 C++03 中伪造构造函数继承?

c++关于派生类的拷贝构造函数