我什么时候应该使用关键字“typename”当使用模板时 [英] When should I use the keyword "typename" when using templates
问题描述
我最近在一个小项目上工作,我无法弄清楚一些东西。
I've been working lately on a small project, and I couldn't figure out something..
我得到一个.h文件,包含类,使用typename模板。在该类中有一个私有类。
I've been given a .h file that was containing a class, using a typename template. Inside that class there was a private class.
template <typename T>
class Something
{
public:
Something();
~Something();
Node* Function1(int index);
int Index(const T& id);
private:
class Node()
{
public:
T id;
//Imagine the rest for the Node
};
};
当我想定义类Something的函数时出现问题
The problem occured when I wanted to define the functions of the class "Something"
这是我做的(在.inl文件中)
Here's how I was doing it (in a .inl file)
template<typename T>
Node* Something::Function1(int index) //Is the return type well written?
{
// returns the node at the specified index
}
template<typename T>
int Something::Index(const T& id) //Is the parameter type well specified?
{
// returns the index of the node with the specified id
}
所以bug部分是在定义部分...我必须告诉编译器返回类型(在这种情况下Node *)使用typename模板(像这样: typename Node *
)?参数怎么样? typename const Node&
?
So the bugging part was in the definitions part... Do I have to tell the compiler that the return type (in this case Node*) uses the typename template (like this: typename Node*
) ? And what about the parameter ? typename const Node&
?
所以基本上,当我必须指定wether函数/参数使用模板
So basically, when do I have to specify wether the function/parameter uses a template?
感谢您的时间。
推荐答案
template<typename T>
typename Something<T>::Node * Something::Function1(int index) //Is the return type well written?
{
// returns the node at the specified index
}
这篇关于我什么时候应该使用关键字“typename”当使用模板时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!