以下是我的头文件的代码:
#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);
然而,没有不平衡的括号,我认为代码没有错,我假设这与构造函数重载有关,但在网上研究后,似乎没有任何特殊规则。 此外,当我用int替换Genome时
我正在使用C ++ 11。
答案 0 :(得分:0)
你有一个循环依赖,你需要打破。通常使用前向声明。
事实上,neuralNetwork.h
头文件(如图所示)中没有任何内容实际需要 Genome
的完整定义,这意味着您可以替换
#include "genome.h"
与
class Genome;
您仍需要源文件中的#include "genome.h"
,您可以在其中定义(实现)构造函数。