用大括号括起来的初始化列表初始化结构体时出错


struct CLICKABLE
{
    int x;
    int y;
    BITMAP* alt;
    BITMAP* bitmap;
    CLICKABLE()
    {
        alt=0;
    }
};
CLICKABLE input={1,2,0,0};

这段代码给出了以下错误:

无法从大括号括起的初始化列表转换

有人能解释一下为什么编译器给我这个错误,以及我如何修复它?我还在学习这门语言。

你的类有一个构造函数,所以它不是一个聚合,这意味着你不能使用聚合初始化。可以添加一个接受正确数量和类型参数的构造函数:

struct CLICKABLE
{
  int x;
  int y;
  BITMAP* alt;
  BITMAP* bitmap;
  CLICKABLE(int x, int y, BITMAP* alt, BITMAP* bitmap) 
  : x(x), y(y), alt(alt), bitmap(bitmap) { ... }
  CLICKABLE() : x(), y(), alt(), bitmap() {}
};
或者,您可以删除用户声明的构造函数,并使用聚合初始化:
CLICKABLE a = {};         // all members are zero-initialized
CLICKABLE b = {1,2,0,0};

最新更新