小编Kov*_*vaz的帖子

C++转换运算符与构造函数优先级,编译器不同

我有2个非常简单的类,ClassA和ClassB.我希望能够从ClassB转换为ClassA.使用Sun C++ 5.11,它可以很好地编译并按照我的预期运行,根据这个:转换构造函数与转换运算符:优先级.

当我尝试使用gcc版本4.8.2编译它时,它给出了一个关于对重载函数的模糊调用的错误.当铸造看起来是一个相当明确的行为时,为什么这会表现不同?

守则:

main.cc

#include <iostream>

class ClassB;

class ClassA
{
    public:
    ClassA( const int& num )
    : _number( num )
    { std::cout << "ClassA int constructor\n"; }

    private:
    int _number;
};

class ClassB
{
    public:
    ClassB( const int& num )
    : _number( num )
    { std::cout << "ClassB int constructor\n"; }

    operator ClassA() const throw()
    {
        std::cout << "ClassB operator ClassA()\n";
        return ClassA( _number );
    }
    operator int() const throw()
    {
        std::cout << "ClassB …
Run Code Online (Sandbox Code Playgroud)

c++ gcc casting

6
推荐指数
1
解决办法
746
查看次数

标签 统计

c++ ×1

casting ×1

gcc ×1