2016-11-20 54 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(),並且在那種情況下工作正常,我只是困惑了爲什麼在聲明中不工作,但現在我明白解析器因爲它忽略了括號,所以將它與變量名混淆起來。謝謝!! –