c++ - 不应调用基类的复制构造函数

标签 c++ templates

这只是解释类层次结构的代码片段,而不是实际有问题的代码

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/

相关文章:

c++ - 访问 DLL 中的重载函数

java - 是否可以在 Windows 上监听 "ipconfig"变化?

python - Django 1.9。模板继承。 block 不显示

c++ - 值在常量表达式替代模式中不可用

c++ - 为什么我不能在 Visual Studio 2013 下使用 FFTW 或 AMPFFT 获得有效的二维 FFT?

c++ - 嵌套循环创建美国国旗

c++ - 区分 map 和集合的模板

c++ - 混合模板与 std::enable_if_t 和特化

templates - 戈朗。如何使用 html/template 包创建循环函数

c++ - 使用 C++ 模板时出现错误 C2512 和错误 C2955