Технически это нормально и, возможно, самый простой ответ на ваш конец вопрос:
Foo< vector<double> > a_foo = a_foo.CopyClear( vec );
Это технически ОК, потому что CopyClear
- это static
функция-член.
И никаких технических проблем нет, например, вместо этого вы можете использовать typedef
.Или просто поместите эти static
функции-члены в область имен, как шаблоны функций.Или в каком-то классе помощников, как кто-то уже предлагал.
Но, несмотря на отсутствие технических проблем, дизайн не идеален;прямо говоря (извините), это немного хуже, чем бессмысленно.
Например, в CopyClear
, почему вы копируете вектор, а затем отбрасываете результат копирования ?Вам нужно только создать пустой вектор того типа, который знает ваш код.
И, например, почему вы вводите механизм побочных эффектов?
Следует избегать и устранять побочные эффекты, не введено.
Приветствия и hth.,