Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
28.12.2012, 18:43     Объявленный класс не воспринимается как тип #1
Подскажите почему вылетает эта ошибка?
Миниатюры
Объявленный класс не воспринимается как тип  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.12.2012, 18:49     Объявленный класс не воспринимается как тип #2
Пространство имен std открыто?
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
28.12.2012, 20:09  [ТС]     Объявленный класс не воспринимается как тип #3
Цитата Сообщение от soon Посмотреть сообщение
Пространство имен std открыто?
нет к std обращаюсь через std::something
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 20:53     Объявленный класс не воспринимается как тип #4
popelyuk, а нужный хедер подключен?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.12.2012, 20:59     Объявленный класс не воспринимается как тип #5
Цитата Сообщение от popelyuk Посмотреть сообщение
нет к std обращаюсь через std::something
А почему на скриншоте не std::basic_string?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 21:06     Объявленный класс не воспринимается как тип #6
soon, там base_string. Я думаю, это еще один местный тип
soon
 Аватар для soon
2536 / 1301 / 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;
}
popelyuk
 Аватар для 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 обявлены но здесь тоже в весь код в этом пространстве имён, кроме того я специально пробывал дописывать это пространсво никакого эффекта.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.12.2012, 23:45     Объявленный класс не воспринимается как тип #9
popelyuk, судя по первому скрину, проект большой и кода много. Поэтому выкладывать весь код не прошу.
Собственно, если можете привести минимальный код, воспроизводящий ту же ошибку - было бы здорово.
Иначе вряд ли можно помочь.
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
31.12.2012, 18:45  [ТС]     Объявленный класс не воспринимается как тип #10
Цитата Сообщение от I.M. Посмотреть сообщение
popelyuk, судя по первому скрину, проект большой и кода много. Поэтому выкладывать весь код не прошу.
Собственно, если можете привести минимальный код, воспроизводящий ту же ошибку - было бы здорово.
Иначе вряд ли можно помочь.
занчит закоментировал я тот код с операторм приведения типа таперь ругается на кждую библиотеку что там не определены дефайны из exception.h собственно ситуация выглядит приблизительно следующим образом:
Миниатюры
Объявленный класс не воспринимается как тип  
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
31.12.2012, 19:05     Объявленный класс не воспринимается как тип #11
Ох.
Получается, что libN.h подключают exception.h, который подключает libN.h
И если все подключение идет в .h файлах, а не в .cpp, то имеем ошибку компиляции.
При перекрестном инклуде нужно использовать forward declaration.
popelyuk
 Аватар для 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 классов?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
01.01.2013, 18:05     Объявленный класс не воспринимается как тип #13
popelyuk, приведите пример файлов (только дефайны и инклуды сохраняя исходный порядок следования). Я по схеме плохо понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2013, 21:17     Объявленный класс не воспринимается как тип
Еще ссылки по теме:

C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
Массив, объявленный как двумерный, является одномерным C++
C++ Класс как тип данных, ошибка

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

Или воспользуйтесь поиском по форуму:
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
01.01.2013, 21:17  [ТС]     Объявленный класс не воспринимается как тип #14
Цитата Сообщение от go Посмотреть сообщение
popelyuk, приведите пример файлов (только дефайны и инклуды сохраняя исходный порядок следования). Я по схеме плохо понял.
всё разобрался forward declaration рулит я просто не разобрался в его сути теперь подключил нужные либы в .cpp и почти всё вроде как работает, но появилась новая проблема, матерится на дефайны, вот:
Миниатюры
Объявленный класс не воспринимается как тип  
Yandex
Объявления
01.01.2013, 21:17     Объявленный класс не воспринимается как тип
Ответ Создать тему
Опции темы

Текущее время: 05:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru