#include<iostream>
class A {
public:
void fun() { fun2(); }
~A() = default;
protected:
virtual void fun2() = 0 ;
};
class B : public A {
protected:
virtual void fun2() { std::cout<<"Hiiii";}
};
class X {
public:
X(A& a) {
a.fun();
}
};
class Y {
public:
Y( int x ) : val(x), x(B())
{}
private:
int val;
X x;
};
int main() {
Y y(5);
}
无法弄清楚为什么会出现以下编译错误:
prog.cpp:在构造函数“Y::Y(int)”中:prog.cpp:30:32:错误:从类型“A”的右值对类型“A&”的非 const 引用进行无效初始化 Y( int x ) :val(x),x(B()) ^prog.cpp:21:7:注意:初始化“X::X(A&)”的参数 1 X(A& a) { ^