C中的嵌套隐式转换
发布时间:2020-12-16 09:46:01 所属栏目:百科 来源:网络整理
导读:我希望在两个级别进行隐式转换.以下代码片段是我面临的问题的原型. //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
我希望在两个级别进行隐式转换.以下代码片段是我面临的问题的原型.
//Sources class 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(); } //driver int 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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |