相关疑难解决方法(0)

boost :: noncopyable有什么优点

为了防止复制类,您可以非常轻松地声明私有复制构造函数/赋值运算符.但你也可以继承boost::noncopyable.

在这种情况下使用boost有什么优点/缺点?

c++ boost noncopyable

64
推荐指数
7
解决办法
3万
查看次数

禁用编译器生成的复制赋值运算符

当我写一个类(比如说class nocopy)时,是否有可能完全阻止复制操作符的存在?如果我没有定义一个,而其他人写的东西就像

nocopy A;
nocopy B;
A = B;
Run Code Online (Sandbox Code Playgroud)

编译器将自动生成一个定义.如果我自己定义一个,我将阻止编译器自动生成,但上面的代码仍然是合法的.

我希望上面的代码是非法的,并生成编译时错误.我怎么做?

c++ copy class

35
推荐指数
2
解决办法
4万
查看次数

在QObject派生类中重复Q_DISABLE_COPY

在Qt中有一个宏允许为类声明私有拷贝构造函数和赋值运算符:http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#Q_DISABLE_COPY

据说这个宏应该用于所有QObject(尤其是QWidget)派生类.

我理解这是如何工作的以及为什么它有用.

我不明白:有什么理由在我的QObject派生类中重复Q_DISABLE_COPY而QObject已经包含Q_DISABLE_COPY并且通过这有效地防止了我的派生类被复制了吗?

c++ qt noncopyable qobject qt5

16
推荐指数
1
解决办法
8177
查看次数

错误C2059:vs10中`= delete`的语法错误c ++代码

我有这个代码的问题:

// Make it Non Copyable 


FileLogger (const FileLogger &) = delete;
FileLogger &operator= (const FileLogger &) = delete;
Run Code Online (Sandbox Code Playgroud)

我需要解决这个错误:

Error   1   error C2059: syntax error : ';' 
Error   2   error C2238: unexpected token(s) preceding ';'  
Run Code Online (Sandbox Code Playgroud)

在上面发布的相同代码行中,此错误发生16次,语法相同.

c++ compiler-errors visual-studio-2010 visual-c++ c++11

1
推荐指数
1
解决办法
2396
查看次数