关于静态结构体变量初始化的问题
各位大神,小弟今天碰到一个很棘手的问题,就是我在类外声明一个结构体,然后在类内定义一个私有静态结构体变量,然后初始化其成员,直接看代码。。。
我将结构体声明改为如下依然报错
项目中必须这样使用,暂时还没想到其他办法,各位大神,请帮忙小弟解决一下,在此不胜感激!
[解决办法]
# include <iostream>
using namespace std;
typedef struct
{
int Index;
char str[256];
} stArr;
class Base
{
private:
static stArr arr;
public:
static void Print();
};
stArr Base::arr = { 0, "a" };
void Base::Print()
{
cout << arr.str[arr.Index] << endl;
}
int main()
{
Base base;
base.Print();
return 0;
}
[解决办法]
class Base
{
private:
static stArr arr;
public:
static void Print();
}//少了个分号
[解决办法]
class Base
{
private:
static stArr arr;
public:
static void Print();
}//看报错啊,都说了缺少一个分号!!
太大意了!!
[解决办法]
int Base::arr.Index = 0;
char Base::arr.str[0] = 'a';
改为:
stArr Base::arr = {0, 'a'};
如果放在print里,就没有定义了,所以链接失败。
静态成员变量需要在类外部定义的。
[解决办法]
两个错误。
一是分号;
二是类内静态结构体的初始化应该是:
stArr Base::arr = { 0, "a" };
[解决办法]
int Base::arr.Index = 0;
char Base::arr.str[0] = 'a';
这里有问题吧?需要 int 和 char ?