一个新手问题。假设我们有一个来自随机类的两个对象,保存在这样的指针中:
RandomClass *obj1 = new RandomClass;
RandomClass *obj2 = new RandomClass;
现在,当你从这些对象中调用一个函数时,你可以这样做:
obj1->randomFunction();
但是如何使用该类的运算符函数,例如重载的乘法运算符(使用普通对象):
obj1 * obj2
如果不可能,你会如何解决这个问题(写一个新功能是不可能的)。很抱歉,如果这可能是一个愚蠢的问题,但我对如何使用指针算法等问题感到困惑。
答案 0 :(得分:2)
您可以取消引用指针,如下所示:
RandomClass *obj3 = new RandomClass();
*obj3 = (*obj1) * (*obj2);
如果您不再需要将两个对象相乘,请不要忘记正确清除内存,以及上面的代码将在堆上为obj3
分配新内存。
答案 1 :(得分:1)
如果您的变量是指针,则在声明变量时需要*
。我认为你的意思也有两个不同的变量:
RandomClass *obj1 = new RandomClass;
RandomClass *obj2 = new RandomClass;
取消引用指针:
result = *obj1 * *obj2;
答案 2 :(得分:1)
第一部分代码无效C ++(看起来更像Java)。这是有效的C ++:
RandomClass* obj1 = new RandomClass;
RandomClass* obj2 = new RandomClass;
要将obj1
和obj2
指向的对象相乘,请取消引用它们(*obj1
和*obj2
)。代码可能如下所示:
(*obj1) * (*obj2)
obj1
是一个指针; *obj1
就是它指向的东西。
答案 3 :(得分:1)
我认为你的意思是
RandomClass *obj1 = new RandomClass();
RandomClass *obj2 = new RandomClass();
如果要将两者相乘,则需要将指针推迟到达实际值。
multRes = (*obj1) * (*obj2);