2014-11-03 187 views
-2

我需要幫助建立一個構造函數,它將在main()中實例化 時初始化相應的數據。構造函數無法正常工作

#include <iostream> 
using namespace std; 
class Entity{ 
     public: 
      int x, int y, char icon; }; 

int main(){ 
Entity pData; 
pData.x=4; pData.y=3, pData.icon='1'; 
cout<<pData.x<<'\n'\; cout<<pData.y<<'\n'\; cout<<pData.icon<<\'n'\; 
} 

我包括了一個我只需要的例子......那裏不需要包含所有的程序。反正我需要的構造函數初始化主數據只要實例(pData中)實體的創建:我所知道的構造必須是像

Entity::Entity(int x, int y, char icon){}; 

,一次在主會被實例化像

Entity pData{3,4,'1'}; 

,但顯然,這不是爲我工作

哦通過我需要一個構造函數的方式,因爲這是分配的要求擺在首位在這裏你去從文檔複製馬上文件

「寫的那臺X,Y和圖標的實體類參數的構造函數,並用它創建實例時」

+0

有什麼東西在{}構造函數的?或者這是整個事情? – deviantfan 2014-11-03 10:15:31

+0

那麼這就是我不完全正確..我需要{}內的東西嗎?我的書在解釋這個 – Ardy 2014-11-03 10:24:40

+0

時做得很糟糕,請看下面的構造函數示例(以及爲什麼在這種情況下你不需要一個)。一般來說,創建對象時會執行構造函數。它*可以給變量一些初始值(固定值或一些參數值或...),但它也可以做其他任何事情。這就像一個正常的方法,只是自動調用。如果這是一種emptry方法,它就不會做任何事情。 – deviantfan 2014-11-03 10:28:14

回答

1

其實你還沒有爲你的類定義構造函數Entity(但是編譯器已經爲你定義了它,但它只是爲成員變量Entity分配內存)。

class Entity { public: int x,y; char icon; Entity(int _x, int _y,char _icon) { x=_x; y=_y icon=_icon; } };

int main() 
{ 
    Entity obj(4,3,'I'); 
    return 0; 
} 

`

+0

Aww,我看到構造函數是在類的公共部分中定義的,真棒!這對我有用,謝謝你,先生。 – Ardy 2014-11-03 10:41:07

1
Entity::Entity(int a, int b, char c) 
{ 
    x = a; 
    y = b; 
    icon = c; 
}; 

定義你的構造是這樣的...

和呼叫它喜歡: -

Entity pData(1,2,'a'); 
+0

,你會把這段代碼(定義)放在你的類定義之後嗎? – Ardy 2014-11-03 10:37:10

1

你不需要添加一個構造函數,因爲你的類是一個聚合。這會工作(固定一些錯別字後)

class Entity 
{ 
public: 
    int x, y; 
    char icon; 
}; 

#include <iostream> 

int main() 
{ 
    using std::cout; 

    Entity pData{3,4,'1'}; 

    cout << pData.x <<'\n'; 
    cout << pData.y <<'\n'; 
    cout << pData.icon <<'\n'; 
} 
+0

我明白你在說什麼,但是賦值的指令是這樣寫的:「爲實體類編寫一個參數化的構造函數,它設置x,y和圖標,並在創建實例時使用它。」 – Ardy 2014-11-03 10:27:58

+0

@Ardy然後你爲什麼不把你的問題中的信息? – juanchopanza 2014-11-03 10:28:55

+0

對不起,我花了10分鐘寫下這個問題,然後去了一秒,回來後,沒有意識到某人(我的孩子的兄弟)刪除了一大堆信息,所以我又重寫了,忘了補充一點,對不起 – Ardy 2014-11-03 10:33:20

1

例如,你可以定義一個構造方式如下

class Entity{ 
     public: 
      Entity(int x, int y, char icon) : x(x), y(y), icon(icon) {} 
      int x, int y, char icon; 
}; 

而且使用它像

Entity pData(4, 3,'1'); 

Entity pData { 4, 3,'1' }; 

Entity pData = { 4, 3,'1' }; 

要考慮到你原來的類定義,你可以寫

Entity pData = { 4, 3,'1' }; 

沒有明確定義構造函數。