【发布时间】:2018-09-13 19:44:02
【问题描述】:
我有这个结构:
struct NetDescriptor {
unsigned int inputNeuronCount = 1;
char **inputNeuronType = nullptr;
unsigned int hiddenNeuronCount = 0;
unsigned int *hiddenNeurons = nullptr;
unsigned int outputNeuronCount = 1;
char **outputNeuronType = nullptr;
};
并且想用这个代码在另一个类的方法中初始化它:
NetDescriptor nnDescriptor = {
3,
{"EAT\n","FOODL\n","FOODR\n"},
3,
{4,4,3},
3,
{"EAT\n","MOVEL\n","MOVER\n"}
};
但它只给我这个错误:
第 3 行:错误:用大括号括住类型“char**”的标量初始值设定项
我试过了:
{{"EAT\n"},{"FOODL\n"},{"FOODR\n"}},
但它并没有改变任何东西,我也尝试了 std::string 相同的结果。
【问题讨论】:
-
大多数时候,如果你想要
char **,你应该改用std::vector<std::string> -
嗯,是的。您将
inputNeuronType声明为指针。指针是单个值;你不能用表达式列表来初始化它。 -
@melpomene 那么你有什么推荐的呢?我想在代码中定义这个结构静态而不是像 vec.push_back("EAT");
-
inputNeuronType应该做什么?它真的需要是一个指针(指向另一个指针)吗? -
@melpomene 不,我只想要一个包含 std::string 或 char* 字符串数组的结构,我想用 STRUCT = { {"1","2"," 3"}};或类似的东西。
标签: c++ pointers initialization