我什么时候应该使用关键字“typename"?使用模板时 [英] When should I use the keyword "typename" when using templates

查看:39
本文介绍了我什么时候应该使用关键字“typename"?使用模板时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近一直在做一个小项目,但我想不出什么..

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
}

所以问题部分是在定义部分......我是否必须告诉编译器返回类型(在这种情况下 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& ?

所以基本上,我什么时候必须指定函数/参数是否使用模板?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆