首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于静态结构体变量初始化的有关问题

2013-03-25 
关于静态结构体变量初始化的问题各位大神,小弟今天碰到一个很棘手的问题,就是我在类外声明一个结构体,然后

关于静态结构体变量初始化的问题
各位大神,小弟今天碰到一个很棘手的问题,就是我在类外声明一个结构体,然后在类内定义一个私有静态结构体变量,然后初始化其成员,直接看代码。。。


我将结构体声明改为如下依然报错

项目中必须这样使用,暂时还没想到其他办法,各位大神,请帮忙小弟解决一下,在此不胜感激!





[解决办法]
# 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 ?

热点排行