访问重复类的方法时出现问题

Trouble accessing the methods of a duplicated class

本文关键字:问题 方法 访问      更新时间:2023-10-16

我正在尝试通过从Foo创建一个新对象并调用其duplicate方法(duplicate创建一个新的Foo对象)来访问Fooa()的方法。然后我打电话给::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;
}

必须使用 -> 运算符来访问对象指针的成员。所以试试这个:

foo.duplicate()->a();

而且你不能将 5(Foo::a() 方法返回的整数)分配给 Foo *a,你为什么要这样做?