C++ 在静态函数中使用类成员
我有个问题。使用VS2010C++ 在静态函数中使用类成员,c++,C++,我有个问题。使用VS2010 class B { }; class C { }; class A { static B b; C c; public: static int foo(); }; 当我尝试在foo中使用c时,我收到一个错误,即我无法在静态函数中使用非静态成员。当我尝试在foo中使用b时,我收到以下信息: 未解析的外部符号“私有:静态类B A::B” 我该怎么办?非静态成员与类的特定实例关联,而
class B { }; class C { };
class A {
static B b;
C c;
public:
static int foo();
};
当我尝试在foo中使用c时,我收到一个错误,即我无法在静态函数中使用非静态成员。当我尝试在foo中使用b时,我收到以下信息:
未解析的外部符号“私有:静态类B A::B”
我该怎么办?非
静态成员与类的特定实例关联,而静态函数与任何特定实例都不关联。因此,在静态
函数中使用非静态
成员是没有意义的:您将引用哪个实例?至于你应该做什么,我不知道。你想解决的问题是什么
关于“未解析的外部符号”的消息可能是因为您声明了b
。但你还没有定义它;你需要把ba::B代码>在类声明之外的某个地方,通常在一个源文件中(不要将其放在头文件中)。非静态成员与类的特定实例相关联,而静态函数不与任何特定实例相关联。因此,在静态
函数中使用非静态
成员是没有意义的:您将引用哪个实例?至于你应该做什么,我不知道。你想解决的问题是什么
关于“未解析的外部符号”的消息可能是因为您声明了b
。但你还没有定义它;你需要把ba::B代码>类声明之外的某个地方,通常在一个源文件中(不要将其放在头文件中)。这是两个截然不同的问题。关于第一个,在
为了使用c
,您需要一个实例<代码>c
不存在,除非
在一个例子中。如果将对a
的引用传递给
静态功能,您可以访问该对象中的c
。具有
关于第二个:静态数据成员的声明是
只是:一份声明。你需要一个定义:
B A::b;
在(单个)源文件中。这是两个截然不同的问题。关于第一个,在
为了使用c
,您需要一个实例<代码>c
不存在,除非
在一个例子中。如果将对a
的引用传递给
静态功能,您可以访问该对象中的c
。具有
关于第二个:静态数据成员的声明是
只是:一份声明。你需要一个定义:
B A::b;
在一个(单个)源文件中。您是否尝试过静态C;您尝试静态C而不是C chave;我尝试在Win32API上进行OOP包装,而不是C cI。我有一个名为Handler的类,带有静态BOOL回调DlgProc(HWND、UINT、WPARAM、LPARAM);我需要访问该函数中的类成员。非常感谢各位。我已经把B A::B放在一个源文件中,这很有效!我正在尝试在Win32API上进行OOP包装。我有一个名为Handler的类,带有静态BOOL回调DlgProc(HWND、UINT、WPARAM、LPARAM);我需要访问该函数中的类成员。非常感谢各位。我已经把B A::B放在一个源文件中,这很有效!对不起,我弄糊涂了。你的意思是只定义一次。对不起,我弄糊涂了。你的意思是只定义一次。