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

Функция внутри структуры использует указатель, как поле этой структуры - C++

Восстановить пароль Регистрация
 
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
28.11.2013, 11:41     Функция внутри структуры использует указатель, как поле этой структуры #1
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp,
есть файл GlobalItems.h, где хранятся глобальные структуры проекта
внутри GlobalItems.h есть такая структура:
C++
1
2
3
4
5
6
7
8
extern class A;
struct B {
A* A_Obj;
void Func ( )
{
A_Obj->Example ();
}
};
вылетает что-то типа: Error 4 error C2027: use of undefined type 'A' c:\users\...\GlobalItems.h

в чём не прав?

на всякий случай: строки #include "A_class.h" в ГлобалИтемс нет намеренно, т.к. в самом файле A_class.h есть #include "GlobalItems.h", поэтому через extern
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 11:41     Функция внутри структуры использует указатель, как поле этой структуры
Посмотрите здесь:

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? C++
Структуры! Обработка внутри структуры C++
Списки структур. Указатель на узел другого списка внутри структуры C++
C++ Как задать указатель для структуры (и не только)
Объявить указатель на структуру внутри структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
28.11.2013, 11:45     Функция внутри структуры использует указатель, как поле этой структуры #2
Память под A_Obj не выделена
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct B {
A* A_Obj;
public:
B()
{
   A_Obj = new A();
}
void Func ( )
{
A_Obj->Example ();
}
};
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.11.2013, 11:48     Функция внутри структуры использует указатель, как поле этой структуры #3
Цитата Сообщение от TamaGOch Посмотреть сообщение
в чём не прав?
В том, что
C++
1
class A;
не объявляет класс. Эта строка не содержит определения класса. Её достаточно, чтобы сказать компилятору: "Вот у меня есть такой класс где-то, можешь не паниковать, когда я захочу хранить указатели на такие объекты". Но она не говорит ему: "У объектов класса A есть метод Example".

Цитата Сообщение от TamaGOch Посмотреть сообщение
на всякий случай: строки #include "A_class.h" в ГлобалИтемс нет намеренно, т.к. в самом файле A_class.h есть #include "GlobalItems.h", поэтому через extern
You're doing it wrong. Используйте #pragma once или include guards чтобы избежать проблем с повторным определением при циклическом включении.
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
28.11.2013, 11:54  [ТС]     Функция внутри структуры использует указатель, как поле этой структуры #4
MrCold, спасибо,
OhMyGodSoLong у меня стоит на ifndef и define , думал помогут, но не получалось, попробую конечно ещё раз, спасибо за объяснение
Tulosba
28.11.2013, 14:18     Функция внутри структуры использует указатель, как поле этой структуры
  #5

Не по теме:

Цитата Сообщение от TamaGOch Посмотреть сообщение
OhMyGodSoLong у меня стоит на ifndef и define
какое сочетание ...

Yandex
Объявления
28.11.2013, 14:18     Функция внутри структуры использует указатель, как поле этой структуры
Ответ Создать тему
Опции темы

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