2017-08-04 91 views
-2

這裏是我的頭文件中的代碼:C++構造函數重載 - 爲什麼說我需要括號?

#ifndef NEURAL_NETWORK_H 
#define NEURAL_NETWORK_H 

#include <vector> 

#include "genome.h" 
#include "node.h" 

class NeuralNetwork { 
protected: 
    std::vector<Node> m_nodes; 

public: 
    NeuralNetwork(std::vector<Node> nodes); 
    NeuralNetwork(Genome genome); 

    void update(); 
}; 

#endif 

然而,當我嘗試編譯它,它說:

neuralNetwork.h:15:23: error: expected ‘)’ before ‘genome’ 
    NeuralNetwork(Genome genome); 

但是有沒有不平衡括號,我看沒有錯代碼,我假設這是與構造函數重載有關,但經過在線研究後,似乎沒有任何特殊規則。 此外,當我與詮釋

我使用C++ 11

+3

你可以請嘗試創建一個[最小,***完整***和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示? –

+1

可能'Genome'在不同的命名空間中? – Aconcagua

+1

您不提供足夠的信息。你在這裏展示的代碼沒有明顯的錯誤。 –

回答

0

替代基因組你,你需要打破循環依賴。一個通常通過使用轉發聲明來做到這一點。

事實上,有沒有在你的neuralNetwork.h頭文件(如圖所示)實際上需要說的Genome完整定義,這意味着你可以用

class Genome; 

你還是更換

#include "genome.h" 

需要#include "genome.h"源文件雖然,你定義(實現)的構造函數。

相關問題