0

宣言および定義した後でも、プログラムの下でコンパイル中に「このスコープで show は宣言されていませんでした」というエラーが表示されます。どこが間違っているのかわからない。提案してください。

ありがとう

 #include < iostream >

using namespace std;

class add

{

        int x;
        int y;

        public:
                void putdata(int,int);
                void show(add);
                friend add sum(add,add);
};

void add :: putdata (int m,int n)

{

        x = m;
        y = n;
}

void add :: show(add c)

{

        cout<<c.x <<" "<<c.y<<endl;
}

add sum(add a1,add a2)

{

        add a3;
        a3.x = a1.x + a2.x;
        a3.y = a1.y + a2.y;
        return(a3);
}


int main()
{

        add p,q,r;

        p.putdata(10,15);
        r.putdata(20,25);

        r = sum(p,q);

        show(r);

        return 0;
}

4

2 に答える 2

1

showの非静的メンバー関数でaddあるため、 のインスタンスで呼び出す必要がありますadd

p.show(r);

これはあまり意味がないので、非メンバー関数にするか、そのパラメーターを削除することができます。

show(r); // non-member

また

r.show(); // member
于 2013-05-22T07:18:34.263 に答える
0

r.show(r); のように、add のオブジェクト内から show(r) メンバー関数を呼び出す必要があります。

于 2013-05-22T07:25:25.750 に答える