【发布时间】:2022-01-04 00:10:35
【问题描述】:
几个小时以来,我一直在寻找这个问题的答案。即使我有一个解决方法,我也想了解这个问题。链接以下内容时出现未定义的引用错误:
.h:
class Test
{
public:
class Class1
{
public:
Class1(int i);
int x;
void Inc();
};
static Class1 one;
static int F1();
};
.cpp:
#include "Test.h"
Test::Class1 one(0);
void Test::Class1::Inc()
{
x++;
}
Test::Class1::Class1(int i)
{
x = i;
}
int Test::F1()
{
//extern Test::Class1 one;
one.Inc();
return one.x;
}
我在 F1 函数中获得了对 Test:one 的未定义引用。如果我添加 extern Test::Class1 一个,它似乎可以工作。为什么需要这样做?
【问题讨论】:
-
你到底想用
Test::Class1 one(0);实现什么? -
投票结束是一个错字。
Test::Class1 one(0);应该是Test::Class1 Test::one(0); -
@kevin 这不是一个简单的错字,而是使用嵌套类型时常见的混淆。
标签: c++ static inner-classes class-variables qualified-name