使用来自另一个类的参数复制构造函数

Mee*_*n Z 0 c++ arduino

我尝试从另一个类复制一个构造函数.这两个类在同一个文件中.我目前得到的错误是:

错误:没有匹配函数来调用B :: B(A&)

主文件中的一个片段:

#include "file.h"
// create the objects
A object1(1000000, 5);
B object2(object1);
Run Code Online (Sandbox Code Playgroud)

来自file.cpp的片段:

class A {
public:
    A::A(uint32_t one, uint32_t two) { }
};
class B : public A {
public:
    B::B(const B &copy) : A(copy) { }
 }

};
Run Code Online (Sandbox Code Playgroud)

头文件文件中的一个片段.

class B : public A {
public:
    B(const B&);
Run Code Online (Sandbox Code Playgroud)

我试图使代码尽可能简单地进行stackoverflow.有人可以解释这里有什么问题吗?

bur*_*rly 5

你的B :: B(const B&)期望引用const B,但你提供的是A的实例.B从A派生并不重要; 即使每个B都是-A A,反之亦然.实际上,object1是-A,但是不是B.

为了澄清更多:如果你想要B可以从A构造,你需要提供一个带A的构造函数,如: B::B(const A& copyA): A(copyA) {}