7 / 7 / 4
Регистрация: 10.05.2015
Сообщений: 55
1

STL & classes

11.08.2015, 17:06. Показов 459. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Товарищи, выручайте. Ситуация следующая. Имеется два *.h файла, в каждом файле отдельный класс, которые взаимодействуют друг с другом. #includ`ы прописаны друг на друга. В каждом классе описывается STL-контейнер queue с производным типом ActionInfo. В классе Foo всё нормально компилируется, а в классе Bar компилятор выдаёт ошибку.

1й файл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "Bar.h"
...
struct ActionInfo
{
    SYSTEMTIME time;
    DWORD indicator;
    POINT coordinate;
};
class Foo
{
private:
    std::queue <ActionInfo> queueActionInfo;
//много кода
};
2й файл.
C++
1
2
3
4
5
6
7
8
#include "Foo.h"
....
class Bar
{
public:
    void FooBar(std::queue <ActionInfo> *queueActionInfo); // <------тут возникает ошибка
//много кода
};
Error 12 error C2065: 'ActionInfo' : undeclared identifier
Error 13 error C2923: 'std::queue' : 'ActionInfo' is not a valid template type argument for parameter '_Ty'
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2015, 17:06
Ответы с готовыми решениями:

Nested classes && enum declaration
Добрый вечер, вопрос больше наверно с тем холливаров: зачем использовать вложенные классы и enum class'es, если можно их вынести в...

функторы && STL
Знакомлюсь с функторами. Помогите реализовать поиск минимального числа в последовательности, средн.арифмет. в посл-ти и количество...

Abstract class & STL
list&lt;CGraphicsObject*&gt; objS; objS.push_back(new Circle(&quot;Circle&quot; , 1)); objS.push_back(new Square(&quot;Square&quot; , 2)); objS.push_back(new...

2
Эксперт С++
 Аватар для hoggy
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
11.08.2015, 17:27 2
foo.cpp цепляет хэдэр foo.h
который цеплят bar.h (при этом до содержимого foo.h дело ещё не дошло)

который цепляет foo.h
но так как foo.h уже был подцеплен, второй раз он уже не цепляется.

дальше начинается текст bar.h
в котором фигурирует имя, которое ещё только потом будет описанно,
когда дело дойдет до содержимого текста foo.h
C++
1
void FooBar(std::queue <ActionInfo> *queueActionInfo); // оно будет описанно значительно позже

лекарство:

выносите ActionInfo в отдельный хэдэр
1
7 / 7 / 4
Регистрация: 10.05.2015
Сообщений: 55
11.08.2015, 17:30  [ТС] 3
Большое спасибо за разъяснение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.08.2015, 17:30
Помогаю со студенческими работами здесь

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;)
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A ...

Шаблоны STL & утечка памяти.
Доброе время суток. Имеются 2 класса: 1)TVoteServer 2)TVoteServers - класс коллекция TVoteServer Реализация следующая: ...

VS 2010 Express Edition && (MFC && ATL(WTL)) ???
Здравствуйте Смогу ли я воспользоваться Легально MFC и ATL(WTL) библиатеками в VS 2010 Express Edition ? Или эти библиотеки...

VBControlExtender vs DesignTimeReference vs Classes&Standart_OCX
Ситуёвина такая: Взял я MSHFlexGrid и привел его в чувства. При этом, чтоб его использовать в каждой из форм проекта, приходится...

как в deployment descriptor веб-приложения прописать startup&shutdown classes ?
как в deployment descriptor веб-приложения прописать сабж? я использую jBuilder 6 EE, может у него даже какой-нибудь визуальный редактор...


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

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

Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru