c++为类分配内存
c++ Allocating memory for a class
我有这个类:
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");
相关文章:
- Win32编译器选项和内存分配
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 当需要超过16GB的连续内存时,内存分配失败
- 尝试摆脱任何堆内存分配
- 以下代码执行哪种内存分配(动态或静态)?
- 开放 CV 中的动态内存分配,用于视频处理
- 为什么类和 main() 函数中也有动态内存分配
- 使用 NTAllocateVirtualMemory 和 GetProcAddress 的内存分配问题不起作用
- C++:矢量分配器行为、内存分配和智能指针
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- Linux C++ 中的页面对齐内存分配
- 整数内存分配/释放
- 将内存分配返回值强制转换为 TYPE 数组
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 给定特定内存地址的数组的动态内存分配
- 如何完成内存分配
- 我刚刚了解了C++中的动态内存分配
- 在先前调用 string::find 后添加内存分配和内存集会导致它返回 npos.为什么?
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- 无法删除布尔动态内存分配