禁用复制构造函数和赋值运算符时将引用实例传递给静态方法
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
。
我的 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
。