我有一个使用库进行通信的类,如下所示:
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 和 Reader。
我在用指针做这件事之间纠结:
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))
{}
};
我正在和一位同事交谈,显然后者很糟糕,因为它依赖于成员初始化顺序。但是,它也有一个有效的自动复制构造函数。
有什么更好的方法来处理这样的事情,特别是如果成员对象列表变得更长?