У меня есть этот класс под названием MemoryManager,
предполагается реализовать простой умный указатель, (ссылка на счет);
у меня есть вектор, в котором я храню запрошенные указатели, и я возвращаю индекс указателя вызывающей стороне ..
когда пользователь создает указатель типа MemoryManager, он вызывает функцию инициализатора под названиемified_malloc (size_t), создает объект MemoryManager, выделяет пространство памяти и сохраняет его в данных, увеличивает число и сохраняет объект в 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
}
Проблема, с которой я сталкиваюсь, заключается в том, что я перегружал пару операторов, однако, когда я пытаюсь запустить код ниже, оператор "=" не вызывается ..
Может кто-нибудь указать мне на проблему ...
//the main code
{
MemoryManager* obj1 = (MemoryManager*) x->fun1(4); //fun1 returns an index to a MemoryManager obj in a vector;
MemoryManager* obj2 = obj1 ;
}
Редактировать: уже пробовал следующее, без изменений
{
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);
}