
//Sourcesclass A{public: voID print() { std::cout <<"Class A"<< std::endl; } operator int() { return 1; }};class B{public: voID print() { std::cout <<"Class B"<< std::endl; } operator A() { return A(); }};class C{public: voID print() { std::cout <<"Class C"<< std::endl; } operator B() { return B(); }};voID print_(A a){ a.print();}//driverint main( int argc,char* argv[] ){ C c; //print_( c ); // compilation error //print_( C() ); // compilation error print_( c.operator framework::configuration::B() ); //when explicitly invoked it worked return 0;} 我查看了以下链接中提供的示例,确信这是可以实现的.
How do conversion operators work in C++?
Operator overloading
解决方法 该标准仅允许一个涉及用户定义类型的隐式转换.你有两个,因此编译错误.见12.3 / 4
总结At most one user-defined conversion (constructor or conversion function) is implicitly applIEd to a single value.
以上是内存溢出为你收集整理的C中的嵌套隐式转换全部内容,希望文章能够帮你解决C中的嵌套隐式转换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)