Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
#1

Объявленный класс не воспринимается как тип - C++

28.12.2012, 18:43. Просмотров 527. Ответов 13
Метки нет (Все метки)

Подскажите почему вылетает эта ошибка?
0
Миниатюры
Объявленный класс не воспринимается как тип  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2012, 18:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объявленный класс не воспринимается как тип (C++):

Не виден класс, объявленный в другом классе - C++
Есть два класса, имеющие ссылки друг на друга, один из них находится внутри третьего класса, при объявлении внутреннего класса class...

typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения - C++
Вот код: #include <iostream> #include <string> #include <conio.h> #include <windows.h> #include <typeinfo> using...

Класс как тип данных, ошибка - C++
Подскажите пожалуйста в чем ошибка. Или предложите другой вариант пожалуйста... Задача была такая, создать класс студентов, создать...

Указатель на классы, объявленный как член класса - C++
Если у кого-то сохранились какие-либо статьи, заметки в памяти на тему указателей, пожалуйста, дайте примеры подробных примеров, статьи,...

Массив, объявленный как двумерный, является одномерным - C++
Сабж в теме. Объявляю двумерный массив 5х5 строкой float mas; Затем заполняю его данными с клавиатуры. При компиляции ошибок никаких,...

Программа воспринимается как вирус из-за автообнвления - C++
День всем добрый! Вот весь код отвечающий за обновление: URLDownloadToFile(0, L"http://mkostoevr.github.io/CFLF.ver",...

13
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.12.2012, 18:49 #2
Пространство имен std открыто?
0
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
28.12.2012, 20:09  [ТС] #3
Цитата Сообщение от soon Посмотреть сообщение
Пространство имен std открыто?
нет к std обращаюсь через std::something
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 20:53 #4
popelyuk, а нужный хедер подключен?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.12.2012, 20:59 #5
Цитата Сообщение от popelyuk Посмотреть сообщение
нет к std обращаюсь через std::something
А почему на скриншоте не std::basic_string?
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 21:06 #6
soon, там base_string. Я думаю, это еще один местный тип
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.12.2012, 21:46 #7
I.M., проглядел, спасибо.

popelyuk, все-таки, мне кажется, что либо пространство имен не расшарено, либо файл не подключен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Foo
{
    operator const Bar() const
    {
        return Bar();
    }
};
 
int main()
{
 
    return 0;
}
0
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
28.12.2012, 22:40  [ТС] #8
Цитата Сообщение от soon Посмотреть сообщение
I.M., проглядел, спасибо.

popelyuk, все-таки, мне кажется, что либо пространство имен не расшарено, либо файл не подключен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct Foo
{
    operator const Bar() const
    {
        return Bar();
    }
};
 
int main()
{
 
    return 0;
}
всё подключено, да это мои типы они не std а в cml обявлены но здесь тоже в весь код в этом пространстве имён, кроме того я специально пробывал дописывать это пространсво никакого эффекта.
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 23:45 #9
popelyuk, судя по первому скрину, проект большой и кода много. Поэтому выкладывать весь код не прошу.
Собственно, если можете привести минимальный код, воспроизводящий ту же ошибку - было бы здорово.
Иначе вряд ли можно помочь.
0
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
31.12.2012, 18:45  [ТС] #10
Цитата Сообщение от I.M. Посмотреть сообщение
popelyuk, судя по первому скрину, проект большой и кода много. Поэтому выкладывать весь код не прошу.
Собственно, если можете привести минимальный код, воспроизводящий ту же ошибку - было бы здорово.
Иначе вряд ли можно помочь.
занчит закоментировал я тот код с операторм приведения типа таперь ругается на кждую библиотеку что там не определены дефайны из exception.h собственно ситуация выглядит приблизительно следующим образом:
0
Миниатюры
Объявленный класс не воспринимается как тип  
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
31.12.2012, 19:05 #11
Ох.
Получается, что libN.h подключают exception.h, который подключает libN.h
И если все подключение идет в .h файлах, а не в .cpp, то имеем ошибку компиляции.
При перекрестном инклуде нужно использовать forward declaration.
0
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
01.01.2013, 17:51  [ТС] #12
Цитата Сообщение от I.M. Посмотреть сообщение
Ох.
Получается, что libN.h подключают exception.h, который подключает libN.h
И если все подключение идет в .h файлах, а не в .cpp, то имеем ошибку компиляции.
При перекрестном инклюде нужно использовать forward declaration.
Я что-то сижу думаю и не могу никак сообразить почему циклическое включение вызывает проблемы, ведь в хедерах только объявления, а реализации лежат в .cpp файлах, ну кроме template классов?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2013, 18:05 #13
popelyuk, приведите пример файлов (только дефайны и инклуды сохраняя исходный порядок следования). Я по схеме плохо понял.
0
popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
01.01.2013, 21:17  [ТС] #14
Цитата Сообщение от go Посмотреть сообщение
popelyuk, приведите пример файлов (только дефайны и инклуды сохраняя исходный порядок следования). Я по схеме плохо понял.
всё разобрался forward declaration рулит я просто не разобрался в его сути теперь подключил нужные либы в .cpp и почти всё вроде как работает, но появилась новая проблема, матерится на дефайны, вот:
0
Миниатюры
Объявленный класс не воспринимается как тип  
01.01.2013, 21:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2013, 21:17
Привет! Вот еще темы с ответами:

Пишу умножить, а воспринимается как указатель - C++
#include <stdio.h> #include <math.h> #include <conio.h> void main() { int i,j; int b; for(i=1;i<5;i++) ...

Как можно объявить класс, заранее не зная его тип template. - C++
Класс: template <class type> class My { private: int n; double sum; type *al; public: My() { al =...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

Почему const wchar_t* воспринимается как wchar_t* ? - C++
Здравствуйте. Я написал вот так: const wchar_t* dir = directory.c_str(); StartModule(dir); и такая ошибка появляется : ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru