Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2014, 16:01   #1
Евгений Тявкин
Новичок
Джуниор
 
Регистрация: 13.10.2014
Сообщений: 2
Вопрос Указатели на переменную в другом классе

Доброго всем дня.
Заранее прошу прощения за сумбурность пояснения. Столкнулся со следующей проблемой:
задача (точнее её отдельная часть): есть 2 класса; в классе 1 есть одномерный массив из пользовательских структур; в методе класса 1 создаётся экземпляр класса 2 и в качестве одного из параметров передаётся ссылка на элемент массива; при инициализации класса 2 ссылка на элемент массива сохраняется в переменной типа указатель на структуру; в классе 2 в методе меняю значение переменной. При компиляции получаю ошибку "E2294 Structure required on left side of . or .*".

Описание структуры:
Код:
struct TState {
  Byte Flag;
  TRect Obl;
};
Фрагмент из описание класса 1:
Код:
.......
public:
  AnsiString sWorkDir;
  TState State[8];
.......
Описание класса 2:
Код:
class TAnalizThread : public TThread
{
private:
  TState *aState;
  unsigned int iLineB;
  unsigned int iLineE;
protected:
  virtual void __fastcall Execute(void);
public:
  __fastcall TAnalizThread(TState &a, unsigned int iLineNum, unsigned int iLineCount);
};
Инициализация класса 2:
Код:
__fastcall TAnalizThread::TAnalizThread(TState &a, const unsigned int iLineNum,
    const unsigned int iLineCount) : TThread(False)
{
	aState = &a;
  iLineB = iLineNum;
.........
Фрагмент метод класса 2, в котором меняется значение переменной:
Код:
void __fastcall TAnalizThread::Execute()
{
  aState.Flag = 1;
.......
Вот собственно на строке "aState.Flag = 1;" и появляется ошибка компиляции.
Подскажите причину и как должно быть. Цель: метод Execute выполняет некоторые вычисления, а результат должен быть помещен в ячейку массива. Заранее благодарен.
Евгений Тявкин вне форума Ответить с цитированием
Старый 13.10.2014, 16:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может
Код:
aState->Flag = 1;
?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 16:35   #3
Евгений Тявкин
Новичок
Джуниор
 
Регистрация: 13.10.2014
Сообщений: 2
По умолчанию

Мда... А ларчик открывался просто, как оказалось. Компилятору такое понравилось. А для меня пока осталось загадкой. Спасибо большое.
Евгений Тявкин вне форума Ответить с цитированием
Старый 13.10.2014, 17:09   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
А для меня пока осталось загадкой.
Ну так откройте книжку и узнайте базовые вещи.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с использованием String в другом классе nidaime Общие вопросы C/C++ 1 21.10.2013 01:07
Описать процедуру Minmax(X, Y), записывает в переменную X минимальное из значений X и Y, а в переменную Y - максимальное kinash96 Помощь студентам 3 12.10.2013 19:49
как использовать переменную,прописанную в другом юните? lubafffka Общие вопросы Delphi 2 01.05.2012 20:42
Изменение сообщения notifyicon в другом классе Красноглаз C# (си шарп) 2 29.02.2012 19:18
Вызов метода в другом классе jec Общие вопросы C/C++ 8 31.12.2010 21:16