c++为类分配内存

c++ Allocating memory for a class

本文关键字:内存 分配 c++      更新时间:2023-10-16

我有这个类:

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;

此代码给出以下错误:error:请求从"myClass*"转换为非标量类型"myClass"。

我试着投x和y,但也没用。你能告诉我如何修复这个代码吗?

提前谢谢。

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)

你忘了把x和y声明为指针了吗?

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

假设你只需要这个类在你的课程期间"活着",你可以做:

  myClass x("s1");

  myClass x = myClass("s1");

如果您需要一个指向类的指针,以便此函数可以将其传递回调用函数:

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