另一位开发人员写了这篇文章,这对我来说很奇怪。它运行于:http://codepad.org/jhnFpzGa
但是我很担心,因为它会警告我无法在MSVC 10上创建默认构造函数(因为显然是参考)。然而它也适用于MSVC。如果我将它作为const UsageInfo& amp;并且警告不会消失。任
typedef const char* UsageInfo[2];
UsageInfo usage_1 = {"foo1", "bar1"};
UsageInfo usage_2 = {"foo2", "bar2"};
struct JumpTableEntry
{
const char* command;
UsageInfo& usage; // {const char *usage,const char &details}
};
JumpTableEntry jumpTable_[] =
{
{"1", usage_1},
{"2", usage_2}
};
int main()
{
cout << jumpTable_[0].usage[1] << endl;
return 0;
}
答案 0 :(得分:-1)
警告似乎有效。它的不是默认构造。如果您希望警告消失,我建议使用以下方法之一:
JumpTableEntry() = delete
但在VS2013之前不支持此功能 - link 您可能会在这里稍微混淆为什么它会提示/警告构造函数,因为您使用了单词struct
。请记住,在C ++中,struct
和class
除非您在public
中默认struct
成员,否则通常会有所不同private
es。{/ p>中的class