【发布时间】:2019-03-27 12:07:38
【问题描述】:
我的代码如下。
struct conv{
struct des
{
des(int a) {}
des(int a, int b) {}
des(int a, int b, int c) {}
};
};
int main(int argc, const char * argv[]) {
int a = 1;
int b = 1;
int c = 1;
if (a > 1)
{
auto conv_desc = conv::des(1, 2, 3);
} else if(b > 1) {
auto conv_desc = conv::des(1, 2);
} else {
auto conv_desc = conv::des(1);
}
return 0;
}
代码的模式是从 mkldnn 中提取的。我唯一想做的就是将 auto conv_desc 从 if-else 语句中取出。 我试图从 if-else 语句中声明 auto conv_desc 。 它发生了一个错误: 声明
推导类型为“auto”的变量“conv_desc”需要初始化器
获取 'conv::des' 类型的临时对象的地址
如果我不能解决这个问题,我将不得不在每个分支中编写一大段重复代码。
【问题讨论】:
-
请切勿将错误粘贴为图片。
-
请正确格式化您的代码。
-
在第二个代码中,每个构造的
conv::des将在每个if块的末尾被破坏。 -
conv_desc是一个指针,为什么不将其定义为conv::des conv_desc类型并根据您的 if/else 逻辑进行分配。 -
@PasserBy,那么你如何表达错误。如果您有想法,请帮我编辑。