我有一个 X 类,我的目标是有一个指示“坏对象”的特殊 var,以实现返回 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 是私有(private)的(我不想允许复制这个对象。)Operator=
也是私有(private)的。
现在,当我尝试初始化时。 X.cpp 中的 badObject 我收到一个错误:
//X.cpp
#include "X.h"
const X& X::badObject = X(1);
因为 COPY CTOR 是私有(private)的。
我在这里做错了什么?我应该怎么做才能解决这个问题?
谢谢!
最佳答案
将声明更改为
const static X badObject;
和定义
const X X::badObject(1);
这将创建 badObject
的一个实例。由于您的函数通过 ref 返回其值,因此不需要复制构造函数或其他任何东西。
关于c++ - 在里面。静态成员,而 COPY CTOR 是私有(private)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530497/