如何访问禁用“=”运算符的类的对象?
Posted
技术标签:
【中文标题】如何访问禁用“=”运算符的类的对象?【英文标题】:How to access the object of the class where "=" operator is disabled? 【发布时间】:2015-11-19 23:34:35 【问题描述】:我有一个 c 类,其对象在 c++ 代码中作为指针生成。
现在该类中的赋值运算符已禁用,因此我如何访问该类的对象并进一步使用它。
【问题讨论】:
C++ 类。 C 没有类。但我想我明白你在问什么。看看下面的答案 使用不是赋值运算符的成员? 【参考方案1】:仅仅因为对象分配被禁用并不意味着指针分配被禁用。
例如,假设您的班级是UncopyableObject
,以下将正常工作。
UncopyableObject * obj = new UncopyableObject();
obj->doSomething();
UncopyableObject * another = obj;
你只需要小心生命周期。您可以通过使用智能指针避免需要关心生命周期。
shared_ptr<UncopyableObject> obj(new UncopyableObject());
obj->doSomething();
shared_ptr<UncopyableObject> another = obj;
【讨论】:
【参考方案2】:您可以像这样使用构造函数简单地实例化它
YourClassName a(arguments);
从现在开始,将YourClassName*
类型的指针相互分配就可以了。
【讨论】:
【参考方案3】:嗯,有些任务……
做一件事,在您的 cpp 文件中创建该类的指针,并使用堆分配为其分配内存。
class *myfield = (class*)malloc(no_of_instances*sizeof(class))
现在使用头文件中的那个对象,将 myfield 的地址分配给那个对象(希望是指针)
现在应该可以正常工作了。请尝试让我知道。
【讨论】:
malloc
不是类类型对象的生命周期,除非(可以说)该对象有一个微不足道的构造函数
我们可以使用 new 运算符而不是 malloc 吗?新类 [内存]
是的,您可以使用new
好的,事情就是这样。如果您不使用 malloc 并在这种特殊情况下使用新类 [memorysize] 它将不起作用。 @niyant 两者都试一下,让我知道哪个效果好..
@spt025 我不知道你想说什么以上是关于如何访问禁用“=”运算符的类的对象?的主要内容,如果未能解决你的问题,请参考以下文章