c++ - 初始化不可复制的成员

标签 c++ design-patterns

我需要使用包含一些不可复制类的代码库。他们已经将他们的赋值运算符和复制构造函数声明为私有(private)的。如何在我的类中初始化这些类型的成员?例如:

class non_copyable; // defined somewhere. 
                    // constructor receives a parameter of type `normal_class'
// my_class.hpp
class my_class {
public:
    my_class();
    virtual ~my_class();
private:
    normal_class good_one;
    non_copyable trouble;
};
my_class::my_class() :
        good_one(normal_class(0,0)), 
        trouble(non_copyable(good_one)) { // ====> error
}

目前我在 my_class 中使用指向 non_copyable 的指针。

最佳答案

你在这里调用复制构造函数,因为你正在从一个临时的 non_copyable 实例构造 trouble:

trouble(non_copyable(good_one))
//        ^^^ temporary non_copyable.

试试这个:

trouble(good_one)

关于c++ - 初始化不可复制的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108813/

相关文章:

c++ - 结合来自 ttf 和背景纹理的渲染器文本的 OpenGL 错误

design-patterns - 为什么在域模型中以不同的方式表示购物车和订单发票?

java - 寻求服务定位器模式实现方面的帮助

c# - 如果接口(interface)调用 Dispose 的实现是否是泄漏抽象

c# - WPF按钮命令模式:Interpret to UML diagram to show actors

c++ cin >> 套接字样式函数

c++ - 使用 C++ STL 功能编写 MySQL UDF

c++ - 为什么我自己的输出流类不起作用?

C++ - 仅使用无符号整数实现快速排序?

c++ - 理解策略模式