I have a class using a library for communication that looks like this:
class Topic { Topic( Type T, String name ); }; class Reader { Reader (Topic, String name); }; class Writer { Writer (Topic, String name); };
I want to make the speaker class as follows:
Talker (Type T, String name);
And generate a Writer and Reader member using the constructor.
I tear between them using pointers:
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)); } };
Straight straight:
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)) {} };
I spoke with a colleague, and, apparently, the latter is bad due to the dependence on the member initialization order. However, it also has a working auto-copy constructor.
What is the best way to do something like this, especially if the list of member objects is increasing?