2013-04-16 72 views
1

一個新手問題。比方說,我們有一個隨機類的兩個對象,保存在指針這樣的:指針指向對象的操作符函數

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

現在,當您從這些對象,你可以簡單地做這樣的調用一個函數:

obj1->randomFunction(); 

但如何你使用的操作功能從類,例如重載乘法運算符(通常的對象):

obj1 * obj2 

,如果它不可能,你會如何去了解它來解決這個proble m(寫一個新函數是不可能的)。對不起,如果它可能是一個愚蠢的問題,但我對此如何適用於指針算術等的迷惑。

+0

@ Fredrik Boston Westman使用解除引用運算符(*) –

回答

1
  1. 如果你的變量是指針,當你聲明它們時你需要一個*。我覺得你的意思有兩個不同的變量,也:

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

    result = *obj1 * *obj2; 
    
+0

哦耶srry。哦,謝謝:) –

2

您可以取消引用指針這樣的:

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

如果你不再需要你一起乘的兩個對象不要忘記清理內存以及w上面的代碼虐待分配obj3的堆新的內存。

+0

你的例子解引用一個未初始化的指針。 –

+0

哎呀,謝謝!這就是我試圖快速寫出來的... – Danny

1

代碼的第一位是無效的C++(看起來更像Java)。這是有效的C++:

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

乘以對象通過obj1obj2指出,解除引用它們(*obj1*obj2)。代碼可能如下所示:

(*obj1) * (*obj2) 

obj1是一個指針; *obj1是它指向的東西。

+0

Yh srry愚蠢的錯誤由我。現在編輯文本:) –

1

我假定你的意思

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

如果要乘以二,你需要尊重指針得到的實際值。

multRes = (*obj1) * (*obj2);