Russian Qt Forum

Программирование => С/C++ => Тема начата: xintrea от Август 23, 2015, 22:32



Название: Как вызвать конструктор с аргументом для члена класса?
Отправлено: xintrea от Август 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. Но хотелось бы узнать о возможности вызывать вполне конкретный конструктор для члена класса.


Название: Re: Как вызвать конструктор с аргументом для члена класса?
Отправлено: PimenS от Август 23, 2015, 22:54
А если так:

Код:
class Record
{
  ...

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

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

Код:
       attachTableData = new AttachTableData(this);


Название: Re: Как вызвать конструктор с аргументом для члена класса?
Отправлено: Old от Август 24, 2015, 05:51
Код
C++ (Qt)
class Record
{
 public:
     Record(...) : attachTableData( this ) {}
 ...
 
 protected:
 
  // Таблица прикрепляемых файлов
  AttachTableData attachTableData;
}