Init.当COPY CTOR是私有的时候
Init. static members while COPY CTOR is private
我有一个类X,我的目标是有一个特殊的变量来表示"坏对象",以便实现一个返回X&
的函数。
例如:
//X.h
class X{
private:
int i;
X(const X& other){} //private COPY CTOR
public:
const static X& badObject;
X(int a) : i(a) {} // the only CTOR
const X& f(){
if(true)
//return some valid X object
else
return badObject;
};
唯一的CTOR不是默认的CTOR, COPY CTOR是私有的(我不想允许复制这个对象)。Operator=
也是私有的。
现在,当我尝试init。我得到一个错误:
//X.cpp
#include "X.h"
const X& X::badObject = X(1);
因为COPY CTOR是私有的。
我在这里做错了什么?我该怎么做才能解决这个问题?
谢谢!
将声明改为
const static X badObject;
和
的定义 const X X::badObject(1);
这将只创建一个badObject
实例。由于您的函数通过ref返回其值,因此不需要复制构造函数或其他任何东西。
相关文章:
- std::is_base_of表示ctor编译错误
- std::filesystem::copy throws filesystem_error
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- 对复制 CTOR 和 CTOR 的未定义引用
- C++ 基本 CTOR 说明 - 为什么不调用赋值/复制构造函数
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- C++成功复制动态分配的 obj 而不复制 ctor?
- QML/C++/QObject Struct Copy
- 如何测试采用 std::initializer_list 的 ctor 具有编译时已知长度?
- C++赋值运算符,我们可以用 copy 替换它吗?
- 为什么我使用 std::copy() 收到运行时错误(分段错误)?
- 如何解决C++中声纳库贝静态代码分析错误"Explicitly define the missing copy constructor, move constructor .."
- 如何使用 std::copy 当类有"无符号字符和运算符[]"时
- std::copy 导致运行时检查失败 #2
- 为什么 Clang 在命名空间'std'中没有名为 'copy' 的成员给出错误
- 调用了Copy ctor而不是move ctor
- Move-CTOR和COPY-CTOR未调用
- std::move( ) 在没有 move-ctor 的情况下调用 copy-ctor.为什么以及如何预防它
- Init.当COPY CTOR是私有的时候
- C++在使用运算符=()时使用copy ctor-这正是如何工作的