如何访问禁用运算符"="类的对象?
How to access the object of the class where "=" operator is disabled?
我有一个c类,其对象是在c++代码中作为指针生成的。
现在赋值操作符在该类中被禁用,那么我如何访问该类的对象并进一步使用它呢?
禁用对象赋值并不意味着禁用指针赋值。
例如,假设您的类是UncopyableObject
,下面的代码可以正常工作。
UncopyableObject * obj = new UncopyableObject();
obj->doSomething();
UncopyableObject * another = obj;
你只需要注意生命周期。你可以通过使用智能指针来避免关心生命周期。
shared_ptr<UncopyableObject> obj(new UncopyableObject());
obj->doSomething();
shared_ptr<UncopyableObject> another = obj;
您可以简单地使用下面的构造函数实例化它
YourClassName a(arguments);
从这里开始,相互分配YourClassName*
类型的指针就可以了
嗯…
在cpp文件中创建该类的指针,并使用堆分配为其分配内存。class *myfield = (class*)malloc(no_of_instances*sizeof(class))
现在使用头文件中的对象将myfield的地址分配给该对象(希望是指针)
现在应该可以正常工作了。试着让我知道…
相关文章:
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 运算符重载 += 添加新对象
- 如何用 2 个对象过度引导运算符
- C++内联运算符重载中,请参阅当前对象
- 使用运算符"="在C++中用值初始化对象
- C++运算符重载做双 * 对象
- 如何在自定义对象的<<运算符中添加自定义前缀
- 尝试重载输出运算符时,我无法遍历对象向量
- 我重载了 << 和 = 运算符。为什么当我将一个对象分配给另一个对象并尝试打印它时,我会被打印出来?
- 在之后仍需要使用源对象时调用父移动分配运算符
- 错误:三元运算符无法在对象中正常工作"cout"
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 无法使用迭代器查找类对象。(二进制 '==': 'userInfo' 不定义此运算符)
- 重载加法运算符(使用函数向对象添加字符串)
- 临时对象上的运算符重载
- 如何使用运算符+重载函数正确返回对象?
- 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐、可能有运算符 new 等)
- 基于 C++98 中函数对象运算符 () 签名的“重载”函数模板