私はこれと私との間に頭を叩いています。私はまだC++を勉強しており、それを楽しんでいますが、私はまだすべてを理解していないし、実際には私のデータ構造クラスのポインタとクラスを掘り下げています。このソートを使ってツリーオブジェクトのフィットネス変数を比較できないのはなぜですか?ベクトル内でsort()を使用して2つのオブジェクト変数を比較する
エラーが発生しました: 'Environment :: compare':非標準構文。 '&'を使用してメンバーへのポインターを作成します。
void Environment::evolve(const int popsize,const int maxgen) {
std::cout << "> evolving function" << std::endl;
std::vector<Tree> popvec;
// Generate initial pop trees and store in array
for (int i = 0; i <= popsize - 1; i++) {
std::cout << "> generating initial population" << std::endl;
Tree membertree;
popvec.push_back(membertree);
}
// Loop for generations
for (int j = 1; j <= maxgen; j++) {
std::cout << "Generation " << j << ":" << std::endl;
// sort array by fitness
std::sort(popvec.begin(), popvec.end(), compare);
// cull herd
// reproduce
}
}
bool Environment::compare(Tree obj1, Tree obj2) {
return (obj1.fitness < obj2.fitness);
}
ありがとうございました。ヘッダと
編集:
#include "Tree.h"
class Environment {
public:
Environment();
~Environment();
void evolve(const int popsize,const int maxgen);
bool compare(Tree obj1, Tree obj2);
private:
Tree* poparray;
};
'Environment :: compare'は' static'でなければなりません。ヘッダーを表示してください。 –
ありがとうございました。 – MushinZero