ЗАЯВЛЕНИЕ: Этот вопрос ВСЕ о ошибке В ПРИСУТСТВИИ следующего продемонстрированного использования оператора. Я понимаю, что есть и другие подобные вопросы, но никто из них не ответил на мой конкретный вопрос. И я знаю, как заставить его работать без инструкции using.Вложенный класс итератора не называет тип
В моем файле заголовка:
class MyClass
{
public:
class MyIterator
{
public:
MyIterator& operator++(int);
private:
static const MyIterator END;
};
...
};
В моем файле реализации (.cc файл):
using ::MyClass; //**QUESTION: I've already used the class, why did the nested MyIterator class not get recognized?** EDIT: excuse my English, I can't write - by I've already used, I mean, I've already told the compiler "using that class"
// the following line is the definition of the static const object
const MyIterator MyIterator::END = MyIterator(); //error: ‘MyIterator’ does not name a type
MyIterator& MyIterator::operator++(int) //error: ‘MyIterator’ does not name a type
{
...
}
Как я кладу в комментарии - ВОПРОС: Я уже используется class, почему не удалось распознать вложенный «класс MyIterator»? --- Коррекция: я уже сказал компилятору «использовать класс», почему ...
Большое спасибо.
EDIT: Большое спасибо за указание несоответствия const; это была ошибка во время копирования пасты; он был исправлен.
Обратите внимание, что цель введения инструкции using заключается в том, чтобы избавиться от полного имени при реализации функции-члена (в этом случае перегрузка оператора). Поэтому, пожалуйста, воздержитесь от этого.
спасибо за указание ошибки const. Это исправлено. Намерение оператора using заключается в том, чтобы позволить мне опустить длинное полностью квалифицированное имя, когда я определяю оператор (и другие функции) - если это не помогает, то: 1) почему бы и нет?компилятор должен добавить публичную функцию/вложенные классы MyClass в путь для интерпретации. 2) как я могу заполнить цель (опустить длинное полное имя) – h9uest
да, я сохранил инструкцию using в моем файле cc; компилятор жаловался. Это должно работать, на мой взгляд, но, видимо, нет. Я смущен. – h9uest
да, это сработает; Фактически, я столкнулся с псевдонимом (другим способом было использование typedef), прежде чем публиковать этот вопрос. На самом деле это не вопрос. это больше о том, почему не мой способ не сработал ... извините, что я управляющий уродом, хотел бы, чтобы он был моим путем;) – h9uest