您的位置:首页 > 编程语言 > C语言/C++

cpp typename关键字

2017-06-21 17:08 204 查看
泛型编程关键字,C#内也有这个概念。

从属名称(dependent names):
模板(template)内出现的名称, 相依于某个模板(template)参数, 如T t;

嵌套从属名称(nested dependent names):
从属名称在class内呈嵌套装, 如T::const_iterator ci;

非从属名称(non-dependent names):
不依赖任何template参数的名称, 如int value;

#include <iostream>
#include <memory>
#include <list>

using namespace std;

template<typename T>
class A1 {
public:
class A11 {
public:
A11(int i) {}
void fun1() {};
};
};

template<typename T>
class B1 : public A1<T>::A11 {//这里不需要加typename  [基类列表]
public:
B1(int i0):A1<T>::A11(i0)//这里不需要加typename  [成员初值列表]
{
}
int fun1(T Is) {
typename A1<T>::A11 a0(1);//这里要加typename  [嵌套从属名称]
a0.fun1();
typename T::iterator i0(Is.begin());//这里要加typename  [嵌套从属名称]
i0++;
return *i0;
}
};

int main()
{
list<int> i0 = {1,2,3};
B1<list<int>> b0(0);
std::cout << b0.fun1(i0) << "\n";
return 0;
}


VS内嵌套从属名称不加typename也可编译通过,但智能提示会不灵。加上后格式正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: