c++ - 用虚函数初始化结构
问题描述
struct A
{
int a;
int b;
void foo(){}
};
A a{1, 2};
它工作正常。但是如果把 foo 改成虚函数,就不会编译出错,
错误 C2440“正在初始化”:无法从“初始化程序列表”转换为
我发现这个,
聚合是一个数组或一个类(第 9 条),没有用户提供的构造函数(12.1),没有私有或受保护的非静态数据成员(第 11 条),没有基类(第 10 条),也没有虚函数(10.3) )。
但背后的原因是什么?
解决方案
为什么不使用参数化构造函数virtual void foo() {}
struct A
{
int a;
int b;
A(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void foo() {}
};
A a{ 1, 2 };
推荐阅读
- sql-server - SQL Server中给定节点下高效查询树的Graph Tables结构的适当实现
- android - SimpleExoPlayer.Builder 与 ExoPlayer.Builder 的区别?
- c - 从头到尾读取文件的最快方法是什么?
- r - 带有 geom_text_repel 和 geom_point 的颜色图例
- r - R flextable proc_freq 删除标签列
- firebase - 多张图片上传并获取下载网址 - Firebase
- jmeter - 使用 jmeter 将 json 有效负载发送到 mqtt
- r - R:让我了解时间序列预测包的准确性功能
- delphi - RAD Sever 中的多个 FireDAC 包
- java - 有没有办法在 Junit5 的 Java 测试类中找到 @Disabled 测试?