Теоретически вы могли бы:
template<typename A, typename B, typename C>
class Object
{
private:
A _a;
B _b;
C _c;
public:
Object()
{
}; // eo ctor
// properties
A getA() const {return(_a);}
void setA(const A& _val) {_a = _val;}
// etc for B & C
}; // eo class Object
// .....
Object<int, double, char> myObject;
Я вижу несколько проблем с этим.Во-первых, геттеры / сеттеры не должны быть «абстрактными» в том, что они сообщают пользователям вашего класса.Как вы собираетесь называть это геттеры / сеттеры?получить() ?getAValue ()?Что это вообще значит?
Во-вторых, это определяет 3. Сколько вам нужно для ваших объектов?1, 2, 4, 9?
В-третьих, геттеры / сеттеры должны быть названы в соответствии с их функцией:
getName()
getAddress()
getMovie()
Звучит так, будто вы просто хотите сэкономить на наборе текста, а не оправдывать усложнение дизайна.*
Что касается вашей второй точки, верните ссылку на объекты (предпочтительно const), но не беспокойтесь о маленьких, целочисленных типах POD (Plain-Old-Data), таких как int, char, bool и т. Д..