簡體   English   中英

當復制構造函數和賦值運算符被禁用時,將引用實例傳遞給 static 方法

[英]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 實例,我希望它被傳遞,但我不希望它以任何方式被復制。 因此,在我的主要 function 中,我實例化了 instanceA1。 接下來,(在我的主要功能中),我想將此實例存儲在全局某個地方,例如 static 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
    }
};

編譯時,我收到 linker 錯誤。 這是為什么? 我是否把整個概念弄錯了(似乎很可能......)? 我將如何解決這個問題?

編譯時,我收到 linker 錯誤。 這是為什么?

因為您沒有定義ClassStatic::referenceToA

我將如何解決這個問題?

在(恰好一個)翻譯單元中定義ClassStatic::referenceToA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM