# includeiostreamusingnamespacestd; class Sample{public:int v; 范例(); sample(intn ) :v(n ) n ) {}; sample(samplex ) {v=2 x.v; }; sampleprint(sampleo ) {cout o.v; o.v=2 * o.v; 返回o; }int main () samplea ) 5; Sample b=a; samplec=print(b ); cout c.v; 样品d; d=a; cout d.v; } vs2017提示
1----3360项目开始生成: vslabcpp,并配置了: debug win32---1pw 31.CPP
1d :codevslabcppvslabcpppw31.CPP (26 ) : error C2440:“初始化”:
无法从“示例”转换为“示例”1d :codevslabcppvslabcpppw31.CPP (26 ) : note : note :
无法复制构造函数class“Sample”,因为复制构造函数未知或没有可用的复制构造函数
1项目“vslabcpp.vcxproj”的生成已完成-失败。
生成=========:成功0个、失败1个、最新0个、跳过0个==========的结果
解决方案:
问题的解决方法是在复制构造函数中添加const即可。
sample(constsamplex ) {v=2 x.v; }