У меня есть управляемая C ++ dll, которая взаимодействует с C # GUI.Работает нормально, общение проходит через обертку и все работает.Код внутри dll полностью написан на C ++, но я не могу заставить работать перегрузку операторов, и я планирую использовать его для сортировки векторов.Я не знаю, есть ли ошибка в моем коде или она не работает, потому что это в управляемом проекте C ++.
Я пробовал сортировку (это, это), но она не работает, потому что перегрузка оператора не работает.Я также пытался использовать сортировку сравнения (it, it, less_than_second), и это также не работает, потому что я получаю ошибки.Я перепробовал много вещей, и я получил ошибки, такие как: - Сортировка принимает только 2 аргумента - less_than_second_ необъявленный идентификатор
Перегрузка оператора не приводит к ошибкам.
Вот код перемещениякласс, где я хочу перегрузить оператор <: </p>
public class Move
{
public:
friend bool operator < (const Move &firstMove, const Move &secondMove)
{
return (firstMove.score < secondMove.score);
}
bool operator<(const Move& b) {
return this->score < b.score;
}
int positionFrom;
int positionTo;
int tileFrom;
int score;
bool isJumpMove;
Move(void);
Move(int to);
Move(int from, int to, bool isJumpMove);
Move(int from, int to, int tileFrom, bool isJumpMove);
};
Testcode in a function of another class.
Move* move1 = new Move();
move1->score = 2;
Move* move2 = new Move();
move2->score = 1;
Move* move3 = new Move();
move3->score = 0;
Move* move4 = new Move();
move4->score = 4;
if(move1 < move2)
{
Console::WriteLine("2 is bigger than 1");
}
else
{
Console::WriteLine("1 is bigger than 2");
}
vector<Move*> vectorList;
vectorList.push_back(move1);
vectorList.push_back(move2);
vectorList.push_back(move3);
vectorList.push_back(move4);
for (int i=0; i<vectorList.size(); i++) {
Console::WriteLine(vectorList[i]->score);
}
sort (vectorList.begin(), vectorList.end() );
sort (vectorList.begin(), vectorList.end(), less_than_second);
for (int i=0; i<vectorList.size(); i++) {
Console::WriteLine(vectorList[i]->score);
}
the compare function ( it's in the cpp file of another class )
inline bool less_than_second( Move &move1,Move &move2){
return (move1.score < move2.score);
}