C++ 在静态函数中使用类成员

C++ 在静态函数中使用类成员,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” 我该怎么办?非静态成员与类的特定实例关联,而

我有个问题。使用VS2010

    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放在一个源文件中,这很有效!对不起,我弄糊涂了。你的意思是只定义一次。对不起,我弄糊涂了。你的意思是只定义一次。