У меня есть два класса: класс шаблона, а также регулярный класс, который наследует от него:«Retroactive Union» - это можно сделать?
template <int N> class Vector
{
float data[N];
//etc. (math, mostly)
};
class Vector3 : public Vector<3>
{
//Vector3-specific stuff, like the cross product
};
Теперь, я хотел бы иметь переменные-члены х/у/г в дочернем классе (полный члены, а не только геттеры - я тоже хочу их установить). Но чтобы убедиться, что все (унаследованные) математика выработаны, x
придется ссылаться на ту же память, что и data[0]
, y
на и т. Д. По сути, я хочу объединение, но я не могу объявить его в базовом классе потому что я не знаю количество поплавков в векторе в этой точке.
Так что - это можно сделать? Есть ли какая-то препроцессор/typedef/template магия, которая достигнет того, что я ищу?
PS: Я использую g ++ 4.6.0 с -std = C++ 0x, если это помогает.
Edit: Хотя ссылки дали бы синтаксис я ищу, идеальное решение не имело бы класса немного больше (и делают ссылки - много Vector<3>
12 байт, Vector3
со ссылками есть. 40!).
Почему вы хотите это, вместо того, чтобы иметь только геттеры и сеттеры, которые ссылаются на соответствующие значения данных? –
Почему геттеры не решают вашу проблему? –
Не будут ли ссылки работать? – Hasturkun