Явная специализация членов с использованием IBM Rational Rhapsody

Я хочу явно специализировать некоторые функции-члены внутри класса, используя IBM Rational Rhapsody.

Что я сделал до сих пор;
Я создал функцию внутри обычного класса, пометил его как шаблон. отмеченный CG :: Генерация в Спецификация. Это будет прототип шаблона.

Затем я создал другую функцию. Помечено как шаблон. Пометил функцию, которую я создал выше, как Основной шаблон под параметрами шаблона. Заполненная реализация. Вот код, который генерирует Rhapsody:

//## class MyConvert
class MyConvert {
////    Constructors and destructors    ////

public :

MyConvert();

~MyConvert();

////    Operations    ////

//## operation strtox(char*,char*)
template <typename T> inline static T strtox(char* in, char** end);

//## operation strtox(char*,char**)
template <> inline double strtox<double>(char* in, char** end) {
//#[ operation strtox(char*,char**)
return strtod(in, end);
//#]
}
};

Когда я собираю это, я получаю это: error: explicit specialization in non-namespace scope 'class MyConvert'

Явная специализация должна быть реализована вне определения класса, например так:

//## class MyConvert
class MyConvert {
////    Constructors and destructors    ////

public :

MyConvert();

~MyConvert();

////    Operations    ////

//## operation strtox(char*,char*)
template <typename T> inline static T strtox(char* in, char** end);
};

//## operation strtox(char*,char**)
template <> inline double MyConvert::strtox<double>(char* in, char** end) {
//#[ operation strtox(char*,char**)
return strtod(in, end);
//#]
}

Как этого добиться с помощью Rhapsody?

1

Решение

Это не совсем ответ, а обходной путь, чтобы иметь специализированные функции. Конечно, это делает свое дело.

Вместо определения функций внутри класса, определите их внутри пакета. Таким образом, реализация будет выходить за рамки класса. Функции-члены класса могут по-прежнему получать доступ к функциям, определенным в пакете.

Я разместил подробное объяснение в своем блоге. Если интересует: http://kaskavalci.com/?p=323

1

Другие решения


По вопросам рекламы [email protected]