0

から新しいオブジェクトを作成し、そのメソッドを呼び出すことで、メソッドa()にアクセスしようとしています(新しい Foo オブジェクトを作成します)。次に、クラスにアクセスできる必要があるため、呼び出します。しかし、それは機能していません。誰でも理由を説明できますか?FooFooduplicateduplicate::a()

#include <iostream>
using std::cout;

class Foo {
    public:
        int a() { return 5; }

        Foo *duplicate() {
            return new Foo();
        }
};

int main() {

    Foo foo;

    Foo *a = foo.duplicate()::a(); // should return 5

    cout << a;

}
4

1 に答える 1

5

->オブジェクト ポインターのメンバーにアクセスするには、演算子を使用する必要があります。だからこれを試してください:

foo.duplicate()->a();

Foo::a()また、 5 (メソッドによって返される整数) を に割り当てることFoo *aはできません。なぜそれをしようとしているのでしょうか?

于 2012-08-18T13:59:45.753 に答える