用大括号括起来的初始化列表初始化结构体时出错
Error when initializing a struct with a brace-enclosed initializer list
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};
相关文章:
- C++类 - 初始化列表 - 递归 - 按值传递
- 在初始化列表之外手动调用基类的构造函数
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- std::map与谓词与初始化列表
- 类内初始化与构造函数初始化列表的顺序
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++初始化列表与分配值
- C++初始化列表中的向量集大小或调整大小
- 在构造函数初始化列表中使用 std::variant
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- 解释了构造函数成员初始化列表
- 使用初始化列表时如何获取私有数据?
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- 如何在成员初始化列表中声明共享指针
- 庞大的初始化列表,如何修复"fatal error C1060: compiler is out of heap space"
- 我可以检查初始化列表中设置的构造函数主体中的变量吗
- 使用整数初始化列表初始化长双精度的向量
- 是否可以在C++中使用初始化列表设置数组的特定成员?