为什么我的以下代码在编译时产生以下代码:错误:'Evolve'类中的'Individual'没有命名类型。
#ifndef EVOLVE_H
#define EVOLVE_H
#include <cstdlib>
#include <iostream>
#include <string>
#include "Operator.h"
#include "Individual.h"
using namespace std;
class Evolve
{
public:
Evolve(int length, Operator** operators, int numOperators);
Individual* bestIndividual;
Individual* run(int generations);
Operator operatorArray[];
private:
int length;
int numOperators;
};
#endif
我的班级文件是
#include <cstdlib>
#include <iostream>
#include <string>
#include "Evolve.h"
#include "Operator.h"
#include "Individual.h"
using namespace std;
Evolve::Evolve(int length, Operator** operators, int numOperators)
{
Individual* bestIndividual = new Individual(length);
}
Evolve::Individual* run(int generations)
{
for(int i=0; i<generations; i++)
{
cout << "test counter = " << i << endl;
}
}
我已经阅读了一些关于错误的其他帖子,而且一切都是关于声明函数的顺序,但我不确定这是否是我问题的原因。
答案 0 :(得分:3)
实现成员函数的方式不正确。
更新
Evolve::Individual* run(int generations)
到:
Individual* Evolve::run(int generations)
此外,要初始化成员,您不要再次重新定义它。
Evolve::Evolve(int length, Operator** operators, int numOperators)
: bestIndividual(new Individual(length)
{
}
在你的构造函数中,
Individual* bestIndividual = new Individual(length);
你定义了一个本地指针bestIndividual
并且它泄漏了内存。
答案 1 :(得分:0)
一般语法是:
return-type class-name :: function-name(arg list)
Individual* Evolve :: run (int generations)
修正您的Evolve
定义