如何访问禁用“=”运算符的类的对象?

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 我不知道你想说什么

以上是关于如何访问禁用“=”运算符的类的对象?的主要内容,如果未能解决你的问题,请参考以下文章

指向具有私有构造函数的类的类成员的指针

为啥不能从派生类对象访问父类的赋值运算符

派生自std :: exception的类的赋值运算符

我应该删除内部创建线程的类的复制构造函数和赋值运算符吗?

如何通过 C++ 中指向该数组的指针访问另一个类中的数组?

如何从 C++ 下标运算符所在的类中访问它?