我有一个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是私有的(我不想允许处理此对象。)Operator=
也是私有的。
现在,当我尝试初始化时。 X.cpp中的badObject我收到一个错误:
//X.cpp
#include "X.h"
const X& X::badObject = X(1);
因为COPY CTOR是私人的。
我在这里做错了什么?我该怎么做才能解决这个问题? 谢谢!
答案 0 :(得分:3)
将声明更改为
const static X badObject;
和
的定义 const X X::badObject(1);
这将只创建badObject
的一个实例。当您的函数通过ref返回其值时,不需要复制构造函数或其他任何内容。