1

一个新手问题。假设我们有两个来自随机类的对象,保存在指针中,如下所示:

   RandomClass *obj1 = new RandomClass;
   RandomClass *obj2 = new RandomClass;

现在,当您从这些对象调用函数时,您可以简单地这样做:

   obj1->randomFunction();

但是如何使用该类中的运算符函数,例如重载的乘法运算符(带有普通对象):

   obj1 * obj2

如果不可能,你将如何解决这个问题(编写新函数是不可能的)。抱歉,如果这可能是一个愚蠢的问题,但我对它如何与指针算术等一起工作感到有点困惑。

4

4 回答 4

2

您可以像这样取消引用指针:

RandomClass *obj3 = new RandomClass();
*obj3 = (*obj1) * (*obj2);

如果您不再需要相乘的两个对象,请不要忘记适当地清除内存,因为上面的代码将在堆上为obj3.

于 2013-04-16T18:51:46.020 回答
1

第一段代码不是有效的 C++(看起来更像 Java)。这是有效的 C++:

RandomClass* obj1 = new RandomClass;
RandomClass* obj2 = new RandomClass;

obj1要将and指向的对象相乘,请取消对obj2它们的引用 ( *obj1and *obj2)。代码可能如下所示:

(*obj1) * (*obj2)

obj1是一个指针;*obj1是它指向的东西。

于 2013-04-16T18:54:02.813 回答
1

我假设你的意思是

RandomClass *obj1 = new RandomClass();
RandomClass *obj2 = new RandomClass();

如果你想将两者相乘,你需要尊重指针以获得实际值。

multRes = (*obj1) * (*obj2);
于 2013-04-16T18:54:20.157 回答
1
  1. 如果您的变量是指针,则*在声明它们时需要 a 。我认为您也打算有两个不同的变量:

    RandomClass *obj1 = new RandomClass;
    RandomClass *obj2 = new RandomClass;
    
  2. 取消引用指针:

    result = *obj1 * *obj2;
    
于 2013-04-16T18:51:24.263 回答