gpt4 book ai didi

c++ - 表达式必须具有类类型

转载 作者:IT老高 更新时间:2023-10-28 12:10:37 25 4
gpt4 key购买 nike

我已经有一段时间没有用 C++ 编写代码了,当我试图编译这个简单的代码片段时,我被卡住了:

class A
{
public:
void f() {}
};

int main()
{
{
A a;
a.f(); // works fine
}

{
A *a = new A();
a.f(); // this doesn't
}
}

最佳答案

这是一个指针,所以试试:

a->f();

基本上操作符.(用于访问对象的字段和方法)用于对象和引用,所以:

A a;
a.f();
A& ref = a;
ref.f();

如果你有一个指针类型,你必须先解引用它以获得一个引用:

A* ptr = new A();
(*ptr).f();
ptr->f();

a->b 表示法通常只是 (*a).b 的简写。

关于智能指针的说明

operator-> 可以重载,尤其是智能指针使用。当you're using smart pointers ,那么你也可以使用 -> 来引用指向的对象:

auto ptr = make_unique<A>();
ptr->f();

关于c++ - 表达式必须具有类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com