我尝试从另一个类复制一个构造函数。这两个类在同一个文件中。我目前得到的错误是:
error: no matching function for call to B::B(A&)
来自主文件的片段:
#include "file.h"
// create the objects
A object1(1000000, 5);
B object2(object1);
来自 file.cpp 的片段:
class A {
public:
A::A(uint32_t one, uint32_t two) { }
};
class B : public A {
public:
B::B(const B ©) : A(copy) { }
}
};
头文件中的一个片段。
class B : public A {
public:
B(const B&);
我试图使代码对于 stackoverflow 尽可能简单。有人可以解释这里有什么问题吗?
最佳答案
您的 B::B(const B&) 需要对 const B 的引用,但您提供的是 A 的实例。B 派生自 A 无关紧要;即使每个 B 都是 A,反之亦然。事实上,object1 是 A,但不是 B。
进一步澄清:如果您希望 B 可以从 A 构造,则需要提供一个采用 A 的构造函数,例如:B::B(const A& copyA): A(copyA) {}
关于c++ - 使用另一个类的参数复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50927400/