У меня есть эта ошибка в «iterator_of_array_int.h»:
#include "array_of_int.h"#include <cstdlib>
namespace leonidandand {
class iterator_of_array_int
{
private:
std::size_t index;
// next line has error
array_of_int * ptr_to_arr;
friend class array_of_int;
};
}
«Array_of_int.h»
#pragma once
#include <cstdlib>
#include "iterator_of_array_int.h"namespace leonidandand {
class array_of_int {
public:
typedef iterator_of_array_int iterator;
iterator_of_array_int begin();
iterator_of_array_int end();
};
}
Я включил «array_of_int.h». В чем дело???
Вы включены array_of_int.h
который, прежде чем определить array_of_int
, включены iterator_of_array_int.h
, Поэтому, когда компилятор видит вашу строку ошибки, он не видел никакого объявления имени array_of_int
, Сообщение об ошибке не является одним из наиболее полезных, выдаваемых компилятором.
Я имею привычку объявлять классы в заголовках; это все, что вам нужно в iterator_of_array_int.h
так что замени include
линия с class array_of_int;
и это хорошо.
Обычно эта ошибка означает, что она не распознает тип, который вы указали перед ‘*’
Предполагая, что у вас есть array_of_int Определение struct / class в файле array_of_int.h, проверьте точку с запятой в конце определения. Похоже, что тип не распознается компилятором