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

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

Войти
Регистрация
Восстановить пароль
 
Quantity
12 / 12 / 1
Регистрация: 06.06.2012
Сообщений: 136
#1

Improper use of typedef - C++

12.06.2013, 15:36. Просмотров 401. Ответов 8
Метки нет (Все метки)

В структурах :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct ActionController
{
public :
int Signature;
int ID;
int ndx;
int ActionSetsCount; 
ActionSet * ASItems; 
};
struct AIPolicy
{
public :
int Signature; 
int ActionControllerCount; 
ActionController * ACItems; 
};
В коде:
C++
1
2
3
4
5
6
7
8
9
10
11
TMemoryStream *st = new TMemoryStream();
if(!OpenDialog1->Execute())
    return;
st->LoadFromFile(OpenDialog1->FileName);
 
AIPolicy *ai = new AIPolicy();
 
st->Read(&ai->Signature,4);
st->Read(&ai->ActionControllerCount,4);
ai->ACItems = new ActionController[ai->ActionControllerCount];
ActionController *(ai->ACItems[0]) = new ActionController();
На последней строке :
C++
1
ActionController *(ai->ACItems[0]) = new ActionController();
Выбивает Improper use of typedef
Как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 15:36     Improper use of typedef
Посмотрите здесь:

C++ improper use of typedef
typedef и vector C++
не видит typedef C++
C++ Про typedef
C++ Про typedef
C++ Пояснение typedef
C++ тип typedef
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
12.06.2013, 16:27     Improper use of typedef #2
Цитата Сообщение от Quantity Посмотреть сообщение
ActionController * ACItems;
Цитата Сообщение от Quantity Посмотреть сообщение
ai->ACItems = new ActionController[ai->ActionControllerCount];
массив уже заполнен объектами класса ActionController, а дальше
Цитата Сообщение от Quantity Посмотреть сообщение
ActionController *(ai->ACItems[0]) = new ActionController();
ты думаешь что в ячейке ai->ACItems[0] лежит указатель и выделить для него память, а там лежит объект!
stima
447 / 296 / 20
Регистрация: 22.03.2011
Сообщений: 961
Завершенные тесты: 2
12.06.2013, 17:46     Improper use of typedef #3
Этим Вы создаете массив ActionController размером ai->ActionControllerCount. И сохраняете указатель в ai->ACItems .
C++
1
ai->ACItems = new ActionController[ai->ActionControllerCount];
По адресу ai->ACItems[0] уже указатель на созданный обьект ActionController .
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
12.06.2013, 17:50     Improper use of typedef #4
stima, ai->ACItems - указатель не на массив указателей! лежал бы там указатель - компилятор строчку схавал и не подавился бы!
stima
447 / 296 / 20
Регистрация: 22.03.2011
Сообщений: 961
Завершенные тесты: 2
12.06.2013, 17:52     Improper use of typedef #5
Цитата Сообщение от Кудаив Посмотреть сообщение
stima, ai->ACItems - указатель не на массив указателей!
Я такое говорил?) Где?)
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
12.06.2013, 17:54     Improper use of typedef #6
Цитата Сообщение от stima Посмотреть сообщение
По адресу ai->ACItems[0] уже указатель на созданный обьект ActionController
не указатель там
stima
447 / 296 / 20
Регистрация: 22.03.2011
Сообщений: 961
Завершенные тесты: 2
12.06.2013, 17:56     Improper use of typedef #7
А что там?)
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
12.06.2013, 18:01     Improper use of typedef #8
объект лежит
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 18:05     Improper use of typedef
Еще ссылки по теме:

C++ Typedef и функция
C++ Ошибка improper use of typedef
C++ _W64 в typedef
C++ применение typedef
Отличия using и typedef C++

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

Или воспользуйтесь поиском по форуму:
stima
447 / 296 / 20
Регистрация: 22.03.2011
Сообщений: 961
Завершенные тесты: 2
12.06.2013, 18:05     Improper use of typedef #9
Кхм, перечитал, согласен не правильно выразился. Я имел виду, что
C++
1
ai->ACItems + index
даст указатель на память там где храниться обьект. Да оператор [] вернет не указатель на обьект, а ссылку на обьект - в этом Вы правы.
Yandex
Объявления
12.06.2013, 18:05     Improper use of typedef
Ответ Создать тему
Опции темы

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