Это указатель, поэтому попробуйте:
a->f();
В основном оператор .
(используемый для доступа к полям и методам объекта) используется для объектов и ссылок, поэтому:
A a;
a.f();
A& ref = a;
ref.f();
Если у вас есть тип указателя, вы должны сначала разыменовать его, чтобы получить ссылку:
A* ptr = new A();
(*ptr).f();
ptr->f();
a->b
Обозначения, как правило , просто сокращение для (*a).b
.
Примечание об умных указателях
operator->
Может быть перегружен, который особенно используется смарт - указатели. Когда вы используете интеллектуальные указатели , вы также используете ->
для ссылки на заостренный объект:
auto ptr = make_unique<A>();
ptr->f();