c++ - 在里面。静态成员,而 COPY CTOR 是私有(private)的

标签 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 是私有(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/

相关文章:

c++ - 如何在成员函数中创建动态对象?

android - 使用 hash_map 时,我在 android NDK 上遇到编译错误 _GLIBCXX_PERMIT_BACKWARD_HASH

c++ - 永远不会调用具有默认参数的复制构造函数

c++ - 在构造函数中使用通用引用时如何允许默认构造?

c++ - flash.net.Socket 和 C++ winsock WSAECONNRESET

c++ - C++ 中的 const 指针与 const 引用

c++ - 如何在没有复制构造函数的情况下为 map 设置值?

java - 需要澄清复制构造函数

vba - 在 Visual Basic 中反复缺少 Microsoft Office 引用

c - 为什么在使用指针的函数中更改此数组的值是错误的?