一个类作为另一个类的静态成员变量的有关问题*
一个类作为另一个类的静态成员变量的问题****
比如:
class A
{
public:
A(int aa=0)
{
a=aa;
}
void f()
{
cout < < "hello " < <endl;
}
private:
int a;
};
class B
{
public:
static void function();
static A a;
};
void B::function()
{
a.f();
}
int main()
{
B::function();
return 0;
}
这样编译没问题,但是连接就出错了,是不是静态变量a没有初始化的原因呢?那这个a又怎么初始化呢?
请大虾指点指点
------解决方案--------------------
class B
{
public:
static void function();
static A a; //这里不分配内存
};
A B::a; // 类内声明 类外定义
------解决方案--------------------
同意david2083
比如:
class A
{
public:
A(int aa=0)
{
a=aa;
}
void f()
{
cout < < "hello " < <endl;
}
private:
int a;
};
class B
{
public:
static void function();
static A a;
};
void B::function()
{
a.f();
}
int main()
{
B::function();
return 0;
}
这样编译没问题,但是连接就出错了,是不是静态变量a没有初始化的原因呢?那这个a又怎么初始化呢?
请大虾指点指点
------解决方案--------------------
class B
{
public:
static void function();
static A a; //这里不分配内存
};
A B::a; // 类内声明 类外定义
------解决方案--------------------
同意david2083