Mad*_* D. 0 c++ operator-overloading
我有这个名为MemoryManager的类,
它应该实现一个简单的智能指针,(计数参考);
我有一个向量,我存储请求的指针,我返回指向调用者的指针的索引..
当用户创建一个MemoryManager类型的指针时,他调用一个名为modified_malloc(size_t)的初始化函数,创建一个MemoryManager obj,分配一个内存空间并将其存储到数据中,增加计数,并将该对象存储到global_MM_vecotr中,并将索引返回为一个指针,当用户试图使用间接( - >)时,我会根据索引值从向量中返回相应的实数指针.
class MemoryManager
{
public:
//operators overloading prototypes
private:
void* data;
int count ;
};
std::vector<MemoryManager*> global_MM_vecotr;
void* MemoryManager::operator=( void* x)
{
// some code here
}
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我重载了几个运算符,但是当我尝试运行下面的代码时,"="运算符没有被调用..可以将问题指向我...
//the main code
{
MemoryManager* obj1 = (MemoryManager*) x->fun1(4); //fun1 returns an index to a MemoryManager obj in a vector;
MemoryManager* obj2 = obj1 ;
}
Run Code Online (Sandbox Code Playgroud)
编辑:已经尝试了以下,没有变化
{
MemoryManager*obj1 = (MemoryManager*) x->fun1(4); //fun1 returns an index to a Class obj in a vector;
MemoryManager*obj2 ;
*obj2 = *obj1;
}
{
MemoryManager* obj1 = ( MemoryManager*) x-> fun1(4);
MemoryManager* obj2;
obj2.operator =(*obj1);
}
Run Code Online (Sandbox Code Playgroud)
从您的代码中,您已operator=为MemoryManager该类定义了一个void*.
您的示例代码是初始化ClassA 指针而不是分配给MemoryManager实例.
您的代码未被调用的原因有三个.
ClassA而不是MemoryManager您实际提供的operator=用途.| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |