构造函数无法正常工作

时间:2014-11-03 10:12:38

标签: c++ visual-c++

我需要帮助构建一个构造函数,该构造函数在实例化时会初始化相应的数据 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),我就需要构造函数在main中初始化数据:我知道构造函数必须是类似的东西

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

并且在主要实例化之后就会像

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

但显然这对我不起作用

哦,顺便说一下,我需要一个构造函数,因为这就是作业首先要求你从doc文件中直接复制

“为Entity类编写一个参数化构造函数,用于设置x,y和icon,并在创建实例时使用它”

4 个答案:

答案 0 :(得分:1)

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

像这样定义你的构造函数......

并称之为: -

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

答案 1 :(得分: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';
}

答案 2 :(得分: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' };

没有明确定义构造函数。

答案 3 :(得分: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;
 }

`