我在外部 sdk 中遇到过这样的 header :
// external.h
//
template <class T> class MyBaseEnum
{
public:
/** String list. */
static const char *mStrings[];
//! Constructor.
inline MyBaseEnum(){}
//! Destructor.
inline ~MyBaseEnum()
{
}
};
我已经看到这个类在另一个 header 中的同一个 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++ - 如何初始化 static const char* enum type traits 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618922/