VS 2012 (Visual C): ошибка C2143: синтаксическая ошибка: пропустить & quot ;; & quot; перед & quot; * & quot;

У меня есть эта ошибка в «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». В чем дело???

1

Решение

Вы включены 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; и это хорошо.

3

Другие решения

Обычно эта ошибка означает, что она не распознает тип, который вы указали перед ‘*’

3

Предполагая, что у вас есть array_of_int Определение struct / class в файле array_of_int.h, проверьте точку с запятой в конце определения. Похоже, что тип не распознается компилятором

0
По вопросам рекламы [email protected]