构造函数无法正常工作
我需要帮助建立一个构造函数,它将在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和图标的实体类参数的构造函数,并用它创建实例时”
其实你还没有为你的类定义构造函数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;
}
`
Aww,我看到构造函数是在类的公共部分中定义的,真棒!这对我有用,谢谢你,先生。 – Ardy 2014-11-03 10:41:07
Entity::Entity(int a, int b, char c)
{
x = a;
y = b;
icon = c;
};
定义你的构造是这样的...
和呼叫它喜欢: -
Entity pData(1,2,'a');
,你会把这段代码(定义)放在你的类定义之后吗? – Ardy 2014-11-03 10:37:10
你不需要添加一个构造函数,因为你的类是一个聚合。这会工作(固定一些错别字后)
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';
}
我明白你在说什么,但是赋值的指令是这样写的:“为实体类编写一个参数化的构造函数,它设置x,y和图标,并在创建实例时使用它。” – Ardy 2014-11-03 10:27:58
@Ardy然后你为什么不把你的问题中的信息? – juanchopanza 2014-11-03 10:28:55
对不起,我花了10分钟写下这个问题,然后去了一秒,回来后,没有意识到某人(我的孩子的兄弟)删除了一大堆信息,所以我又重写了,忘了补充一点,对不起 – Ardy 2014-11-03 10:33:20
例如,你可以定义一个构造方式如下
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' };
没有明确定义构造函数。
有什么东西在{}构造函数的?或者这是整个事情? – deviantfan 2014-11-03 10:15:31
那么这就是我不完全正确..我需要{}内的东西吗?我的书在解释这个 – Ardy 2014-11-03 10:24:40
时做得很糟糕,请看下面的构造函数示例(以及为什么在这种情况下你不需要一个)。一般来说,创建对象时会执行构造函数。它*可以给变量一些初始值(固定值或一些参数值或...),但它也可以做其他任何事情。这就像一个正常的方法,只是自动调用。如果这是一种emptry方法,它就不会做任何事情。 – deviantfan 2014-11-03 10:28:14