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

Improper use of typedef - C++

Восстановить пароль Регистрация
 
Quantity
 Аватар для Quantity
12 / 12 / 1
Регистрация: 06.06.2012
Сообщений: 136
12.06.2013, 15:36     Improper use of typedef #1
В структурах :
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 C++
typedef в c++ C++
Typedef C++
typedef C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 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
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
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 .
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 17:50     Improper use of typedef #4
stima, ai->ACItems - указатель не на массив указателей! лежал бы там указатель - компилятор строчку схавал и не подавился бы!
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
12.06.2013, 17:52     Improper use of typedef #5
Цитата Сообщение от Кудаив Посмотреть сообщение
stima, ai->ACItems - указатель не на массив указателей!
Я такое говорил?) Где?)
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
12.06.2013, 17:54     Improper use of typedef #6
Цитата Сообщение от stima Посмотреть сообщение
По адресу ai->ACItems[0] уже указатель на созданный обьект ActionController
не указатель там
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
12.06.2013, 17:56     Improper use of typedef #7
А что там?)
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 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
Еще ссылки по теме:

Typedef C++
C++ Ошибка improper use of typedef

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

Или воспользуйтесь поиском по форуму:
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
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
Ответ Создать тему
Опции темы

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