我在外部sdk中遇到了标头,如下所示:
// external.h
//
template <class T> class MyBaseEnum
{
public:
/** String list. */
static const char *mStrings[];
//! Constructor.
inline MyBaseEnum(){}
//! Destructor.
inline ~MyBaseEnum()
{
}
};
我已经看到此类在另一个标头中的同一sdk中使用,如下所示:
// foo.h
//
class Foo
{
enum MyEnum
{
A = 0,
B,
C
};
typedef MyBaseEnum< MyEnum > MyEnumType;
MyEnumType bar;
};
我无权访问相应的cpp文件,以查看
mStrings
如何初始化bar,但是我认为这与类型特征有关。正确初始化
foo.cpp
的MyEnumType::mStrings
语法是什么样的? 最佳答案
由于MyBaseEnum
是模板化类,因此mStrings
成员不能在单独的源文件中定义。它必须在包含的头文件中完成,因为定义需要模板参数。
语法基本上与定义任何其他字符串数组相同:
template<class T>
const char* MyBaseEnum<T>::mStrings = { ... };
关于c++ - 如何初始化静态const char *枚举类型特征数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13618922/