0

我有一个类 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 是私有的。

我在这里做错了什么?我应该怎么做才能解决这个问题?
谢谢!

4

1 回答 1

3

将声明更改为

const static X badObject;

和定义

const X X::badObject(1);

这将创建一个badObject. 由于您的函数通过 ref 返回其值,因此不需要复制构造函数或其他任何东西。

于 2013-05-13T20:48:38.590 回答