Попытка использовать оператор указателя * для вызова функции-члена класса

0

Я начинаю в C++ и пытаюсь создать новый экземпляр класса

foo* a= new foo(1);
*(a).kCreateThread();

и я получаю следующую ошибку

Ошибка C2228: слева от '.kCreateThread' должен быть класс /struct/union

Что не так?

  • 3
    (*a).kCreateThread(); , Ваш синтаксис пытается вызвать a.kCreateThread () и разыменовать его возвращаемое значение, в то время как мой сначала разыменовывает указатель a, а затем пытается вызвать kCreateThread с ним. Это потому, что * имеет более низкий приоритет, чем.
Теги:

2 ответа

3
Лучший ответ

То, что вы написали, эквивалентно

*((a).kCreateThread());

Вы должны использовать

a->kCreateThread();

или

(*a).kCreateThread();

Эти последние два эквивалентны.

1

Сделайте это так: a-> kCreateThread();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню