2013-09-14 4 views
2

Я получаю ошибкуРавенство вопрос оператора (C++)

не подходит для 'оператора ==' в 'MyNestedClassPointer-> MyClass :: MyNestedClass :: NestedVar == s'

Где s - ссылка на строку, а NestedVar - указатель на строку. Оскорбительная строка кода - это оператор if, сравнивающий эти два, чтобы убедиться, что они идентичны.

if(thePointer->theVar == s) 

У меня нет перегруженных операторов, но я не думаю, что у меня должна быть потребность в них, видя, как они только строковые указатели, мы имеем дело с. Теперь исправьте меня, если я ошибаюсь, так как я немного ржавый, но не могу ли я это сделать?

+2

если NestedVar является указателем, он должен быть разыменовываются ('*' оператор) перед тем, как выполнить сравнение, в противном случае вы сравниваете указатель с string, когда вы хотите сравнить строку, указанную в строке, с строкой. – goji

+1

Вы также можете предоставить объявления для двух переменных в своем вопросе. – goji

+0

Какой тип '' '? 'char *' или 'std :: string' –

ответ

2

Как упоминалось выше, правильный синтаксис для сравнения pointer to string object и string object заключается в разыменовании указателя.

Поэтому в вашем коде, оно должно быть:

if(*thePointer->theVar == s) 
+2

Надеюсь, это действительно проблема. В этом вопросе недостаточно информации. :) – goji

+0

Спасибо вам обоим, я просто должен был помнить, как разыгрывать в этом стиле, мне почти никогда не приходилось использовать его в прошлом, поэтому я думаю, что он просто выскользнул из памяти. – user2778542

Смежные вопросы