zoukankan      html  css  js  c++  java
  • cpp typename关键字

    泛型编程关键字,C#内也有这个概念。

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

    从属名称(dependent names):
    模板内出现的名称, 相当于某个模板参数

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

    #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) << "
    ";
        return 0;
    }

    VS内嵌套从属名称不加typename也可编译通过,但智能提示会不灵。加上后格式正常。

  • 相关阅读:
    Spring Boot笔记一 输出hello
    Java Web之表单重复提交问题
    Java Web之验证码
    Java Web之下载文件
    Java工具之上传文件
    Java Web之上传文件
    Java Web之EL
    Java Bean的规范
    Java Web之JSP
    《FPGA全程进阶---实战演练》第一章之如何学习FPGA
  • 原文地址:https://www.cnblogs.com/mattins/p/7060601.html
Copyright © 2011-2022 走看看