这只是解释类层次结构的代码片段,而不是实际有问题的代码
class A
{};
class B : public class C
{};
class C : public NocopyClass // constructors are private in Nocopy class
{};
template<typename T1, typename T2>
class D
public:
T1 _t1;
T2 _t2;
D(T1& t1, T2& t2) : _t1(t1),_t2(t2) {}
{
};
class E: public class D<A,B>
{
E(const& a,const& b) : D<A,B>(a,b) {}
};
调用函数:
A objA;
B objB;
E objE(objA,objB);
我想从调用程序中将 A 的对象和 B 的对象传递给类 E 这里调用 E 中定义的复制构造函数,复制 A 和 B 的对象,依次调用类 B 的复制构造函数,直到超基类 NocopyClass 复制构造函数,它不允许复制对象。
如何修改调用函数以不调用基类构造函数? 有什么办法吗?
最佳答案
尝试将 _t1 和 _t2 声明为引用。
template<typename T1, typename T2>
{
class D
public:
T1 &_t1;
T2 &_t2;
D(T1& t1, T2& t2) : _t1(t1),_t2(t2) {}
};
关于c++ - 不应调用基类的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33547562/