我有这堂课:
class myClass{
public:
myClass(string label);
~myClass();
string myget();
void myset(string label);
void myadd(class2 * edge);
private:
string label;
vector<class2 *> myList;
};
我想编写一个函数来检查myClass类型对象的相等性:
bool operator== (myClass& l,myClass& r)
{
}
为了检查那些对象的myList向量,我想复制l和r,对副本的向量进行排序,并检查这些副本的排序向量是否相等。但我想我没有复制l和r。以下是我为此写的内容:
myClass x = new myClass("s1");
myClass y = new myClass("s2");
x = l;
y = r;
sort(x.myList.begin(),x.myList.end());
sort(y.myList.begin(),y.myList.end())
if( x == y)
return true;
else
return false;
此代码提供此错误:错误:从'myClass *'转换为非标量类型'myClass'请求。
我尝试制作x和y指针,但它也没有用。你能告诉我如何修复这段代码吗?
提前致谢。
答案 0 :(得分:5)
myClass x = new myClass("s1"); - here is the problem
运算符new
返回一个指针。因此,您要么存储指针,要么只在自动存储上创建副本(通常称为堆栈)
myClass x = myClass("s1"); - should be so (stack)
myClass *x = new myClass("s1"); - or so (heap)
答案 1 :(得分:4)
您是否忘记将x和y声明为指针?
myClass* x = new myClass("s1");
myClass* y = new myClass("s2");
答案 2 :(得分:3)
假设您只需要课程在课程期间“活”,您可以这样做:
myClass x("s1");
或
myClass x = myClass("s1");
如果你需要一个指向该类的指针,那么这个函数可以将它传递给一个调用函数:
myClass *x = new myClass("s1");