VS 2012 (Visual C): ошибка C2143: синтаксическая ошибка: пропустить ";" до "*"
У меня есть эта ошибка в "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". В чем дело???
3 ответа
Вы включены 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 в файле array_of_int.h, убедитесь, что в конце определения у вас есть точка с запятой. Похоже, что тип не распознается компилятором