簡體   English   中英

將對象插入集合失敗

[英]inserting object into set fails

存在以下課程:

class Actor {
public:

    float xpos{0};
    float ypos{0};

    Actor(float x, float y);
    ~Actor();
};

在管理類的靜態函數中,我想創建一個這樣的actor並將其插入到集合中:

class ActorManager {
private:
    ActorManager();
    static std::set<Actor> actors;
public:
    static void addActor(float x, float y);
}

定義:

std::set<Actor> ActorManager::actors = std::set<Actor>();

void ActorManager::addActor(float x, float y) {
    Actor actor(x, y);
    actors.insert(actor); // <--
}

在存在標記行actors.insert ,編譯將失敗。 錯誤狀態:

/usr/lib/c++/v1/__functional_base:56:21: Invalid operands to binary expression ('const Actor' and 'const Actor')

我在這里想念什么?

您需要重載operator<以便將您的類與std::set一起使用(它需要對元素進行排序)。

bool operator <(const Actor& p1, const Actor& p2){
bool result=false;
if (p1.x<p2.x) 
{
result=true;
}
else if (p1.x==p2.x&&p1.y<p2.y){
result=true;
}
return result;

}

//這是重載<運算符的正確方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM