这与其他一些问题有关,例如:这个,以及我的一些其他问题.
在这个问题和其他问题中,我们看到我们可以在一个很好的步骤中声明和初始化字符串数组,例如:
const char* const list[] = {"zip", "zam", "bam"}; //from other question
这可以在没有麻烦的函数的实现中完成,或者在任何范围之外的.cpp文件的主体中完成.
我想要做的是将这样的数组作为我正在使用的类的成员,如下所示:
class DataProvider : public SomethingElse { const char* const mStringData[] = {"Name1", "Name2", "Name3", ... "NameX"}; public: DataProvider(); ~DataProvider(); char* GetData() { int index = GetCurrentIndex(); //work out the index based on some other data return mStringData[index]; //error checking and what have you omitted } };
但是,编译器抱怨并且我似乎无法找出原因.是否可以在类定义的一个步骤中声明和初始化这样的数组?有更好的替代方案吗?
我确信这是一个非常业余的错误,但一如既往,我非常感谢你的帮助和建议.
干杯,
XAN
使用关键字static和external initialization使数组成为类的静态成员:
在头文件中:
class DataProvider : public SomethingElse { static const char* const mStringData[]; public: DataProvider(); ~DataProvider(); const char* const GetData() { int index = GetCurrentIndex(); //work out the index based on some other data return mStringData[index]; //error checking and what have you omitted } };
在.cpp文件中:
const char* const DataProvider::mStringData[] = {"Name1", "Name2", "Name3", ... "NameX"};