bob*_*205 3 c++ static constructor member
如何使用所有静态方法访问类中的静态成员?
我希望有一组相关的函数,但在调用任何这些函数之前,还要初始化一些重要的数据成员.我认为只有静态成员的课程才有可能.VS2008中的编译器不喜欢我试图访问"a".
当然我错过了一些小但仍然很困惑的东西.:P(即使没有"a"的无效访问,从main调用testMethod()时也不会调用构造函数.
class IPAddressResolver
{
private:
public:
static int a;
IPAddressResolver();
static void TestMethod();
};
IPAddressResolver::IPAddressResolver()
{
IPAddressResolver::a = 0;
cout << "Creating IPAddressResolver" << endl;
}
void IPAddressResolver::TestMethod()
{
cout << "testMethod" << endl;
}
Run Code Online (Sandbox Code Playgroud)
Pét*_*rök 11
您需要在函数之外定义静态数据成员,例如
class IPAddressResolver
{
private:
static int a;
IPAddressResolver();
public:
static void TestMethod();
};
int IPAddressResolver::a = 0;
void IPAddressResolver::TestMethod()
{
cout << "testMethod" << endl;
}
Run Code Online (Sandbox Code Playgroud)
您的构造函数未被调用,因为您没有创建该类的新实例.对于静态实用程序类,您不需要实例,因此可以完全省略构造函数.或者,您可能希望声明它private以明确表示不应该实例化该类(参见上文).
笔记:
public的类领域的,所以我把a成private,