【问题标题】:Error initializing Neural Net object with constructor使用构造函数初始化神经网络对象时出错
【发布时间】:2017-04-04 02:29:54
【问题描述】:

我想知道为什么会出现以下错误:

Main.cpp

int main(int argc, char const *argv[]) {
    vector<unsigned> topology = {3, 2, 1};
    Net (topology);

    /* more code */
}

Net.h

class Net {

public:
    Net(const std::vector<unsigned> &topology);
}

错误:

Main.cpp:18:10: error: redefinition of 'topology' with a different type: 'Net' vs 'vector<unsigned int>'
    Net (topology);
         ^
Main.cpp:17:22: note: previous definition is here
    vector<unsigned> topology = {3, 2, 1};
                     ^
1 error generated.

如果在 main 中,则该错误已修复,而不是:

Net (topology);

我使用类似的东西:

Net net(topology);

我知道创建要使用的变量更有意义,但是如果出于某种原因我想创建一个矢量,我想做一些类似 v.push_back(Net(topology)) 的事情。有人会知道这个错误的原因吗?

【问题讨论】:

    标签: c++ vector constructor neural-network


    【解决方案1】:
    Net (topology);
    

    在这里,您可以创建一个名为 topologyNet。我可以看到您尝试使用topology 作为构造函数参数来创建匿名Net,但括号并没有那么强大。它们在这里实际上被忽略了。

    给你的新Net 一个名字,以便解析器理解你的意思:

    Net myNet(topology);
    

    在表达式上下文中,它已经可以工作了;所以,如果你按照你的建议写v.push_back(Net(topology)),那么它会起作用,所以你可能在询问之前实际上已经尝试过了。

    【讨论】:

    • 非常感谢,确实我已经尝试过创建向量并使用 push_back() 并且它在那种情况下工作正常,我只是很困惑为什么在声明中不起作用,但现在我知道解析器将其与变量名混淆了,因为它忽略了括号。谢谢!!
    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 2019-10-09
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多