2013-05-15 99 views
1

我有此类:C++分配内存一类

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

*“我尝试制作x和y指针,但它不起作用”*“不起作用”是什么意思? –

+0

转换运算符应该接受'const&'。 – pmr

+0

@DrewDormann 'myClass * x = new myClass(“s1”); myClass * y = new myClass(“s2”);' 这导致函数的其他部分出现另一个错误 – jason

回答

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) 
4

你是不是忘记声明x和y为指针自动存储(通常为栈引用)创建副本?

myClass* x = new myClass("s1"); 
myClass* y = new myClass("s2"); 
3

假设你只需要在类“活”为您的类的时间,你可以这样做:

myClass x("s1"); 

或者

myClass x = myClass("s1"); 

如果你需要有一个指针以便该功能可以将其传递回呼叫功能:

myClass *x = new myClass("s1");