2013-11-21 54 views
-1

class-name object-name = new constructor-name()拋出一個錯誤(第16行代碼) 從這我可以推斷出new返回一個指針,我的結論是否正確?此外,如果新的不起作用,這是否意味着對象someObject被分配在堆棧上,而不是堆?如果我想在堆上創建一個對象怎麼辦?爲什麼新的操作符在這裏拋出錯誤?

#include<iostream> 
using namespace std; 
class someClass 
{ 
     public: 
       int x; 
       someClass() 
       { 
         x=6; 
       } 
}; 
int main() 
{ 
     someClass someObject; 
     someClass *pointerObject; 
     someObject = new someClass(); //This line throws error 
     pointerObject = new someClass(); 
     cout<<someObject.x<<endl<<pointerObject->x; 
     return 0; 
} 

P.S:我知道這個問題是模糊的,但我不能把它更好的話,我的不便深表歉意。

+0

這段代碼沒有編譯,應該是'someClass * someObject';' –

+1

'someObject'已經是一個對象了。這不是Java或C#。 – WhozCraig

+0

在Java或C#中,您使用new來創建對象。在C++中,你很少這麼做,通常你只是通過聲明來創建對象。 'someClass someObject;'創建一個對象,不需要'new'。 – john

回答

0

你的main

someClass someObject; 

第一線已經被稱爲默認構造函數不帶參數。 new函數返回一個指向對象的指針,然後嘗試將指針指向一個對象。

您可能會看到here一些對象和指針的解釋。

3

因爲new返回pointer,您試圖將其分配給對象。 C++不是C#!

相關問題