E
Ich würde es anders lösen, ich finde es eleganter wenn die Dialog klasse Settings bekommt und ausgibt.
In der Funktion in der View klasse ist ja bereits eine Instanz enthalten, dann halt:
class CSettingsContainer
{
public:
int m_a, m_b, m_c;
CString m_strText;
CSettingsContainer(int a, int b, int c, CString strText)
: m_a(a), m_b(b), m_c(c), m_strText(strText)
{}
};
//.
/*...*/
//.
void CChildView::Func()
{
CSettings settings;
settings.SetPropertys(CSettingsContainer(1, 2, 3, _T("Text")));
settings.DoModal();
CSettingsContainer NewSettings = settings.GetPropertys();
/*...*/
}
Den Vorteil den ich da sehe ist, du kannst diese Settings klasse von jeder anderen klasse heraus aufrufen ohne dich um Pointer kümmern zu müssen, du brauchst keine werte Überprüfen ob sie gültig sind, das kannst du in dem Container erledigen,
der Container kann auch nötige Konvertierungen durchführen.
Einfach diesen Container in den selben Header wie die Settings klasse deklarieren und definieren, dann kannst du das wunderbar als Schnittstelle verwenden.
Es bietet sich auch an einzelne Getter und Setter hinzuzufügen für einzelne werte, das kannst du halten wie du willst.