У меня есть (частично реализованная) иерархия классов, где
template<typename T> {
class data {
data ( string s ) {}; // loads from file
...
}
class image: public data <T> {
image ( string s ) {}; // loads from file
...
}
class jpgimage : public image<T> {
jpgimage ( string s ) {}; // loads from file
...
}
// other image types
}
Теперь в остальной части моего кода я хотел бы иметь возможность абстрагироваться от того, является ли что-то изображением в формате jpeg или даже изображением, поэтому я хотел бы работать с data
. Но в то же время я хотел бы передать этим функциям команды, специфичные для изображений jpeg.
Поэтому, если я вызываю data<int> img("lena.jpg");
, который оказывается изображением, даже изображением jpeg, я хотел бы, чтобы конструктор данных вызывал конструктор изображения, который, в свою очередь, вызывает конструктор jpgimage.
Я никак не могу заставить его работать, и люди предупреждают о нарезке, виртуальных конструкторах и т. д. Но неужели это такой странный способ настройки?
template
- person Walter   schedule 16.10.2013Data Factory
. Вы передаете фабрике имя файла. Он определяет, какой тип объекта создать, и возвращает его. - person Martin York   schedule 16.10.2013