0
我遇到一個頭在外部SDK,像這樣:如何初始化靜態const char *枚舉類型traits數組?
// 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
的語法如何?
我不認爲這是正確的,實際上,我可以在Foo.cpp中定義'mStrings'像這樣:'模板<> const char * MyBaseEnum < MyEnum > :: mStrings [] = {「A」,「B」,「C」};'或'template <> const char * Foo :: MyEnumType :: mStrings []'但爲什麼會foo.h聲明'MyEnumType欄;' –
@PeterMcG MyBaseEnum是否包含您顯示的非靜態成員函數?那麼這可能是一個原因。否則,你必須詢問在「Foo」中添加'bar'成員變量的作者的理由。 –