在里面。 COPY CTOR是私有的静态成员

时间:2013-05-13 20:24:22

标签: c++ reference copy-constructor static-members

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

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

1 个答案:

答案 0 :(得分:3)

将声明更改为

const static X badObject;

的定义

const X X::badObject(1);

这将只创建badObject的一个实例。当您的函数通过ref返回其值时,不需要复制构造函数或其他任何内容。

相关问题