1

我有以下代码:

class asd {  
    public:  
    int b;  
    asd() { b = rand() % 10; }  
    bool operator<(asd &other) { return b < other.b; }  
};

int main() {  
    asd * c; c = new asd();  
    set <asd> uaua;  
    uaua.insert(c);  
}

然而,在运行它时,我得到了这个错误:

main.cpp|36|error: no matching function for call to ‘std::set<asd, std::less<asd>, std::allocator<asd> >::insert(asd*&)’|

我正在使用 g++ 4.4.3

有人可以告诉我哪里出错了吗?我已经尝试破解这个很长一段时间,但似乎无法找到解决方案。谢谢

4

2 回答 2

4

您有一组asd,并且您正在尝试添加一个指针。

利用:

asd c; 
set <asd> uaua;
uaua.insert(c);
于 2010-06-26T22:45:20.160 回答
0

尝试声明set<asd*>而不是仅仅声明set<asd>.

于 2010-06-26T22:46:28.150 回答