簡體   English   中英

C ++中的嵌套隱式轉換

[英]Nested implicit conversion in C++

我希望在兩個級別進行隱式轉換。 以下代碼片段是我面臨的問題的原型。

//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;
}

我查看了以下鏈接中提供的示例,確信這是可以實現的。

轉換運算符如何在C ++中工作?

運算符重載

該標准僅允許一個涉及用戶定義類型的隱式轉換。 你有兩個,因此編譯錯誤。

見12.3 / 4

最多一個用戶定義的轉換(構造函數或轉換函數)隱式應用於單個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM