Для дальнейшего использования Переполнения стека скопируйте и вставьте любые и все ошибки компилятора дословно и укажите номера строк в фрагментах кода.
Если вы новичок в C ++, я настоятельно рекомендую вам взять хорошую вводную книгу по C ++ и прочитать ее. Вики-тег C ++ здесь содержит список книг, рекомендованных сообществом C ++ здесь, по переполнению стека.
Существует много проблем с размещенным вами фрагментом кода. Вот что я вижу из визуального осмотра фрагмента:
Измените typedef const T
на typename T
и переместите определение в заголовок:
class Constants
{
public:
[...]
template<typename T>
static CString ToString(T value);
{
std::stringstream ss; // Note std:: prefix!
ss << value;
CString csRow = ss.str().c_str();
return csRow;
}
};
(Вы также можете использовать class T
вместо typename T
; в этом случае они оба эквивалентны.)
Убедитесь, что компилятор может видеть определение CString
. Возможно, вам придется включить cstringt.h
, если stdafx.h
этого еще не сделал.
Также обратите внимание, что стандартные типы библиотек находятся в пространстве имен std
. Вот почему там есть std::stringstream
вместо stringstream
. Вы также можете использовать using namespace std;
, но никогда не используйте его в заголовочном файле.
Избегайте использования UPPERCASE NAMES
для переменных и параметров; они обычно зарезервированы для макросов.