加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

At most one user-defined conversion (constructor or conversion function) is implicitly applied to a single value.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读