Не стоит писать геттер / сеттер для каждого поля структуры. Лучшее решение:
typedef struct {
int field1;
int field2;
} structType;
class MyClass {
private:
structType _structName;
public:
const structType & getStructName() const {
return _structName;
}
}
Держите structType
и MyClass
отдельно. Используйте геттер как:
MyClass m;
int var;
var = m.getStructName().field1;
Первый const
необходим для возврата значения const. Второй нужен для const-правильности .
Существует два способа определить сеттер:
class MyClass {
// ...
public:
// type 1
void setStructName(const structType &s) {
_structName = s;
}
// type 2
structType & setStructName() {
return _structName;
}
}
Используйте первый как:
MyClass m;
structType s;
m.setStructName(s);
Вторая версия также позволяет изменять отдельные поля структуры:
m.setStructName() = s;
m.setStructName().field1 = 10;
Обратите внимание, что установщик может нуждаться в некоторых корректировках, если структура содержит указатели.