c++ - 将对象插入集合失败

标签 c++ c++11

存在以下类:

class Actor {
public:

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

    Actor(float x, float y);
    ~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<为了将你的类(class)与std::set一起使用(它需要这个才能对元素进行排序)。

关于c++ - 将对象插入集合失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056544/

相关文章:

c++ - C++20 的内存模型与 C++11 的内存模型有何不同?

c++ - 将多个运算符与运算符重载一起使用会产生奇怪的错误

c++ - 使用 new 动态分配字符是否需要编译器将它们初始化为零

c++ - 如何在MFC 中通过CSocket 发送自定义结构?

c++ - 遍历没有开始和结束的 vector

c++ - LZW压缩生成文件比原来大

c++ - 在 Node.js 插件中阻止调用

对象指针的 C++ 内存分配

c++ - 如何在 C++11 中将元组转换为字节数组

c++ - 实现非成员 IO 操作符