Russian Qt Forum
Май 17, 2024, 19:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как вызвать конструктор с аргументом для члена класса?  (Прочитано 2302 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Август 23, 2015, 22:32 »

Есть у меня класс Record. Одно из его свойств является объектом другого класса AttachTableData. Примерно так:

Код:
class Record
{
  ...

  protected:

   // Таблица прикрепляемых файлов
   AttachTableData attachTableData;
}

У класса AttachTableData два конструктора - конструктор без аргументов (для создания "свободного" объекта), и конструктор с аргументом типа Record (для создания привязанного к Record объекта).

То есть, объект attachTableData при создании в рамках класса Record, должен запомнить указатель на объект класса Record. Конструктор с аргументом выглядит так:

Код:
AttachTableData::AttachTableData(Record *iRecord)
{
  record=iRecord;
}

Проблема в том, что я никак не могу понять, как прописать использование AttachTableData-конструктора с аргументом в рамках класса Record. Сейчас у меня создаются объекты AttachTableData с использованием конструктора без аргумента. И соответственно, объект attachTableData не знает, какому Record он принадлежит.

Я, конечно, могу сделать метод:

Код:
AttachTableData::setRecord(Record *iRecord)

и вызывать его в конструкторе Record, передавая this. Но хотелось бы узнать о возможности вызывать вполне конкретный конструктор для члена класса.
Записан

Собираю информацию по крупицам
http://webhamster.ru
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #1 : Август 23, 2015, 22:54 »

А если так:

Код:
class Record
{
  ...

   // Таблица прикрепляемых файлов
   AttachTableData *attachTableData;
}

В конструкторе Record

Код:
       attachTableData = new AttachTableData(this);
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #2 : Август 24, 2015, 05:51 »

Код
C++ (Qt)
class Record
{
 public:
     Record(...) : attachTableData( this ) {}
 ...
 
 protected:
 
  // Таблица прикрепляемых файлов
  AttachTableData attachTableData;
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 22.