禁用复制构造函数和赋值运算符时将引用实例传递给静态方法

Pass reference instance to static method when copy-constructor and assignment-operator is disabled

我的 ClassA 看起来像这样:

class ClassA
{
private:
    static uint32_t IDCOUNTER;
    uint32_t _id = -1;

public:
    ClassA();
    ~ClassA();
    ClassA(const ClassA&) = delete;
    void operator=(const ClassA&) = delete;
};

我想创建一个特定的 ClassA 实例,我希望它被传递,但我不希望它以任何方式被复制。因此,在我的主要功能中,我实例化了 instanceA1。 接下来,(在我的主要功能中),我想将这个实例存储在全局某个地方,比如静态 class:

int main()
{
    ClassA instanceA1;
    ClassStatic::SetClassA(&instanceA1);
}


// this class is declared in a separate file:
class ClassStatic
{
private:
    static ClassA *referenceToA;

public:
    static void SetClassA(ClassA* refToSingleAInstance)
    {
        referenceToA = refToSingleAInstance; // taken from cpp part of the class just for this question
    }
};

编译时,出现链接器错误。这是为什么?我是不是把整个概念都弄错了(似乎很可能……)?我该如何解决这个问题?

When compiling, I get a linker error. Why is that?

因为你没有定义ClassStatic::referenceToA.

How would I fix this?

在(恰好一个)翻译单元中定义 ClassStatic::referenceToA