2014-01-13 65 views
0

是否可以使用模板构造类型定义中的类型?例如。我想有这样的事情:如何在模板类定义中构造自定义类型

class MyType 
{ 
    template<typename T> 
    someNamespace::T Convert(someOtherNamespace::T value); 
}; 

如果模板不能从事用于此目的,这样的声明甚至可能吗?

问候,Dawid

+1

*为什么你要这样做*? –

回答

1

不,它不是。模板参数名称是实际类型,而不是标识符(如果您想在名称空间中查找,您将需要这些标识符)。

此外,我不明白这是如何特别有用。它要求两个名称空间包含具有相同名称的类型,并且可以以完全通用的方式进行转换 - 您多久会看到一次?

你能更详细地描述你想做什么吗?

+0

我必须在托管(C++/cli)和本机类型之间执行序列化。为此,我有一个模板序列化程序类:\t'template ref class Serializer'。对于大多数类型来说,使用模板很容易,但是如果我只能定义标识符而不是整个类型,那么它会容易得多,因为在两个名称空间中,类型具有相同的名称。 – dawid

+0

@dawid:你可以使用MACRO ...? – Jarod42

+0

@ Jarod42:模板之前没有解析宏吗?如果是这样,我必须使用两种类型(从宏获得)实例化模板函数。我想用一种类型(标识符)模板化一个函数,并在函数中执行精确的类型构造(或者如果一个类是模板化的,则为类)。 – dawid

0

不能确定你想要什么,但也许以下(使用宏)可能会有帮助:

// Assuming value is of type someOtherNamespace::identifier 
#define CONVERT(identifier, value) static_cast<someNamespace::identifier>(value)