为了防止复制类,您可以非常轻松地声明私有复制构造函数/赋值运算符.但你也可以继承boost::noncopyable.
在这种情况下使用boost有什么优点/缺点?
当我写一个类(比如说class nocopy)时,是否有可能完全阻止复制操作符的存在?如果我没有定义一个,而其他人写的东西就像
nocopy A;
nocopy B;
A = B;
Run Code Online (Sandbox Code Playgroud)
编译器将自动生成一个定义.如果我自己定义一个,我将阻止编译器自动生成,但上面的代码仍然是合法的.
我希望上面的代码是非法的,并生成编译时错误.我怎么做?
在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并且通过这有效地防止了我的派生类被复制了吗?
我有这个代码的问题:
// 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++ ×4
noncopyable ×2
boost ×1
c++11 ×1
class ×1
copy ×1
qobject ×1
qt ×1
qt5 ×1
visual-c++ ×1