2014-11-03 136 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' }; 

没有明确定义构造函数。