【问题标题】:Constructor of a inherited class in C++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

标签: c++ compiler-construction constructor inheritance


【解决方案1】:

声明了你的Evidence构造函数,但你实际上没有定义它。

替换:

Evidence(A* a, B* b, C* c);

与:

Evidence(A* a, B* b, C* c) {}

【讨论】:

  • 对不起,我只是将构造函数的声明发布在 .h 在 cpp 文件中,构造函数被定义为进行属性分配。
猜你喜欢
  • 2013-01-24
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2013-09-04
相关资源
最近更新 更多