0

为什么我的以下代码在编译时会产生以下内容:错误:'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;
    }
}

我已经阅读了一些关于该错误的其他帖子,并且都是关于声明函数的顺序,但我不确定这是否是我的问题的原因。

4

2 回答 2

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,它会泄漏内存。

于 2013-09-07T05:32:36.760 回答
0

一般语法是:

return-type class-name :: function-name(arg list)

Individual*  Evolve    :: run          (int generations)

修正你的Evolve定义

于 2013-09-07T05:36:03.937 回答