当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

关于传递临时对象的一个问题

    通过常量引用过来的对象不能调用成元函数.否则会出现类似:'function' : number overloads have no legal conversions for 'this' pointer的错误,
    除了删掉参数中的const外,还有什么解决办法吗?
    代码:
    #include "stdafx.h"
    #include
    class X {
    int i;
    public:
    X();
    int x();
    void x(int x);
    };

    X::X()
    {
    i = 1;
    }

    int X::x()
    {
    return i;
    }

    void X::x(int x)
    {
    i = x;
    }

    X f()
    {
    return X();
    }

    void g1(X& x)
    {
    // cout << " non-const reference:" << x.x() << endl;
    }

    void g2(const X& x)
    {
    // cout << " const reference:" << ends << "get x.i:" << x.x() << endl;

    // int temp =3;
    // cout << "set x.i:" << temp << endl;
    // x.x(temp);
    // cout << "get x.i:" << x.x() << endl;
    }

    int main(int argc, char* argv[])
    {
    g1(f());
    g2(f());

    return 0;
    }
    将成元函数改成const的然后调用:
    #include "stdafx.h"
    #include
    class X {
    int i;
    public:
    X();
    int x() const ;
    void x(int x);
    };

    X::X()
    {
    i = 1;
    }

    int X::x() const
    {
    return i;
    }
    void X::x(int x)
    {
    i = x;
    }
    X f()
    {
    return X();
    }

    void g1(X& x)
    {
    cout << " non-const reference:" << x.x() << endl;
    }

    void g2(const X& x)
    {
    cout << " const reference:" << ends << "get x.i:" << x.x() << endl;

    // int temp =3;
    // cout << "set x.i:" << temp << endl;
    // x.x(temp);
    // cout << "get x.i:" << x.x() << endl;
    }

    int main(int argc, char* argv[])
    {
    g1(f());
    g2(f());

    return 0;
    }

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接