2016-11-20 72 views
-1

我想知道为什么我收到以下错误:错误初始化神经网络的对象与构造

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. 

错误修复d。如果在主,而不是:

Net (topology); 

我使用类似:

Net net(topology); 

我知道,让更多的意义,以创建一个变量来使用,但如果由于某种原因,我想创建例如一个向量< Net>我想做一些像v.push_back(Net(拓扑))。有人会知道这个错误的原因?

回答

2
Net (topology); 

在这里,您通过topology名称创建一个Net。我可以看到,您试图使用topology作为构造函数参数创建一个匿名Net,但括号不是那么强大。这里他们被有效地忽略了。

给你的新Net的名称,让分析器理解你的意思:

Net myNet(topology); 

在表达方面,应该已经工作;所以,如果你按照你的建议写v.push_back(Net(topology)),那么它会起作用,所以你可能在询问之前尝试过。

+1

非常感谢你,确实我已经尝试过创建vector并使用push_back(),并且在那种情况下工作正常,我只是困惑了为什么在声明中不工作,但现在我明白解析器因为它忽略了括号,所以将它与变量名混淆起来。谢谢!! –