У меня есть класс, использующий библиотеку для общения, которая выглядит примерно так:
class Topic {
Topic( Type T, String name );
};
class Reader {
Reader (Topic, String name);
};
class Writer {
Writer (Topic, String name);
};
Я хочу создать класс говорящего так:
Talker (Type T, String name);
И сгенерировать член Writer иЧитатель с конструктором.
Я разрываюсь между выполнением этого с указателями:
class Talker {
Topic* m_Topic;
Reader* m_Reader;
Writer* m_Writer;
Talker (Type T, String name) {
m_Topic = new Topic (T, generateTopicName(name));
m_Reader = new Reader (m_Topic, generateReaderName(name));
m_Writer = new Writer (m_Topic, generateWriterName(name));
}
};
По сравнению напрямую:
class Talker {
Topic m_Topic;
Reader m_Reader;
Writer m_Writer;
Talker (Type T, String name) :
m_Topic(T, name),
m_Reader(m_Topic, generateReaderName(name)),
m_Writer(m_Topic, generateWriterName(name))
{}
};
Я разговаривал с коллегой и, по-видимому,последнее плохо из-за зависимости от порядка инициализации члена.Тем не менее, он также имеет работающий автоматический конструктор копирования.
Какой лучший способ сделать что-то подобное, особенно если список объектов-членов становится длиннее?