精华内容
下载资源
问答
  • 如何做模板
    千次阅读
    2011-12-07 14:35:55

    未专用化的类 模板 不能用作 模板 变量,该变量属于 模板 参数“_Ty”,应为 real 类型

    今天做一个程序,在编译的时候遇到如上所述的问题。

    代码如下:

     

    C++语言Codee#15880
    template < typename  TYPE >
    struct  Node
    {
         TYPE  info;
         TYPE  newValue;         //保存该节点节点新一轮的质心
         TYPE  oldValue;         //保存该节点上一轮的质心
    };

    bool  K_Average( vector < Node >  set)
    {
       return true;
    }

    问题出在了一下这行:
    bool K_Average(vector<Node> set)

    错误提示:
     error C3203: “Node”: 未专用化的类 模板 不能用作 模板 变量,该变量属于 模板 参数“_Ty”,应为 real 类型
    这里Node本身是一个模板,在这里又作为另一个模板vector的模板变量,导致错误。

    先来看看MSDN 中是如何描述模板作为模板变量的:

    Template parameters can themselves be templates. This construct means that the argument must itself be a template, not a class constructed from template. In the following example, the name A of the template parameter for a template template parameter can be omitted, because there is no way that it can be used.

     

     

    C++语言Codee#15881
    // template_specifications3.cpp
    #include 

    template  < class  T >  struct  str1
    {
        T  t;
    };

    template  < template < class  A >  class  T >  struct  str2
    {
         T < int >  t;
    };

    int  main()
    {
         str2 < str1 >  mystr2;
         mystr2 . t . t  =  5;
         printf_s( "%d \n " ,  mystr2 . t . t);
    }
    也就是说将一个模板作为另一个模板的模板参数时候必须声明其是一个模板,而不能直接使用它作为一种新类型。

    修改后代码如下:
    C++语言Codee#15882
    template < typename  TYPE >
    struct  Node                //定义信息节点模板结构体
    {
         TYPE  info;
         TYPE  newValue;         //保存该节点节点新一轮的质心
         TYPE  oldValue;         //保存该节点上一轮的质心
    };

    template  < typename  TYPE >
    bool  K_Average( vector < Node < TYPE >  >  set)
    {
    return true;
    }
    更多相关内容
  • 说课ppt 非常漂亮 可以做模板

    热门讨论 2012-02-13 13:46:17
    非常漂亮的ppt 说课课件,有需要的可以下载!谢谢!
  • 博图WINCC如何画面模板

    千次阅读 2020-12-19 13:51:38
    博图WINCC 如何画面模板1、在PLC中新建一个UDT数据2、新建一个DB块,调用之前建立的UDT3、DB块——属性——属性中,取消"优化的块访问"4、取消后对DB块进行编译,这时可以看到DB块中数据的绝对地址5.1、在WINCC中...

    博图WINCC 如何做画面模板

    1、在PLC中新建一个UDT数据

    2、新建一个DB块,调用之前建立的UDT

    3、DB块——属性——属性中,取消"优化的块访问"

    4、取消后对DB块进行编译,这时可以看到DB块中数据的绝对地址

    5.1、在WINCC中选择库——库视图——项目库——类型——添加新类型——HMI数据类型

    5.2、更改通讯为相对应的PLC类型,将"1"中建立的UDT数据填入到HMI数据表中,需要注意两个表中数据类型、偏移量、位偏移量需要一一对应,名称可以不同。变量填好后发行版本。

    6、在HMI变量中添加新变量表并添加新的变量,其中:

    1)、"连接"要选择WINCC与PLC连接的名称

    2)、"数据类型"选择之前建立的"HMI数据类型"

    3)、"访问模式"为

    4)、地址栏要保持和PLC中的DB块一致

    画面中的元素分别和HMI数据表中的变量关联

    7、在WINCC中建立一个模板画面,更改画面属性——用户数据类型——"HMI数据类型"中建立的数据类型,将将画面中的元素分别和HMI数据表中的变量关联

    8、建立一个控制窗口——添加窗口画面——属性——显示的画面为"模板"——过程变量选择为HMI变量中的变量。

    9、添加三个按钮,事件关联如下图,其中"值"分别为HMI变量表中变量的名称

    责任编辑:YYX

    展开全文
  • 软件项目验收报告模板,系统的运行、功能、文档等信息描述验收。
  • 函数模板参数

    千次阅读 2019-03-24 00:22:11
    C++模板实参的省略 下面列举的几种情况不能省略模板实参: 1)从模板函数实参表获得的信息有矛盾之处。 template<typename T> void fun(T const& a,T const& b);但是你调用时却是fun(250,250.4);那...

    C++模板实参的省略

    下面列举的几种情况不能省略模板实参:
    1)从模板函数实参表获得的信息有矛盾之处。

    template<typename T> void fun(T const& a,T const& b);但是你调用时却是fun(250,250.4);那你就必须写成fun<int>(250,250.4);
    2)需要获得特定类型的返回值,而不管参数的类型如何。

    template<typename T,typename RTRT fun(T const& a,T const& b);此时没有办法进行演绎,所以你可以重写template<typename RT,typename T> RT fun(T const& a,T const& b);调用时写成fun<double>(12,13);
    3)虚拟类型参数没有出现在模板函数的形参表中。

    用typename和class类型声明的参数称为虚拟类型参数,而用《类型修饰》声明的参数称为常规参数
    4)函数模板含有常规形参。

    template<typename T> void fun();调用时直接是fun()!!

     

    具体template使用网上可以看到说明,在这里强调一点关于template模版实参为空的特例。 转载网络关于c++考级的要点. 知识点4:

     

        1.1  函数模板

      1.1.1  考点1:函数模板的概念和声明

        函数模板是一系列相关函数的模型或样板,这些相关函数的源代码形式相同,只是所针对的数据类型不同。对于函数模板,数据类型本身成了它的参数,因而是一种参数化类型的函数。类的成员函数也可以声明为函数模板。
        声明一个函数模板的格式如下:
        template <模板形参表声明>
        返回类型 函数名(函数形参表)
        {
           …… //函数体
        }

        其中,<模板形参表声明>是由一个或多个“模板形参”组成的,如果是多个,则要用逗号隔开。“模板形参”具有下面3种形式:

          typename 参数名
          class 参数名
         类型修饰 参数名

        这里的参数名可以是任意合法的C++标识符。前两种形式是等价的,也就是说,在声明模板形参时,关键字typename和class可以互换。用typename或class声明的参数称为虚拟类型参数;而用“类型修饰”声明的参数则称为常规参数。这里的“类型修饰”是指具体的数据类型(如int、double、char等)。函数模板的<模板形参表声明>中,一定要包含虚拟类型参数,而常规参数则可以根据实际需要选择。

        <模板形参表声明>中声明的虚拟类型参数可以用做:

         函数的返回值类型
         函数的形参的类型
         函数体内变量的类型

           例1.1.1  下列是模板声明的开始部分,其中正确的是(   )。
        A.template <T>            B.template <class T1,T2>
        C.template <class T1,class T2>     D.template <class T1;class T2>
        答案:C

           例1.1.2  下面的函数模板定义中错误的是(   )。
        A.template<class Q>       B.template<class Q>
           Q F(Q x){return Q+x;}         Q F(Q x){return x+x;}
        C.template<class T>       D.template<class T>
           T F(T x){return x*x;}         bool F(T x){return x>1;}
        解析:各个选项中声明的Q和T都是虚拟类型参数。函数模板形参表中声明的虚拟类型参数可以用做:
         函数的返回值类型
         函数的形参的类型
         函数体内变量的类型
        选项B、C和D符合以上三种用法。而选项A让虚拟类型参数Q直接参与运算是错误的。虚拟类型是具体类型(如int型,double型等)的抽象。我们知道,int本身并不能直接参与数学运算,但是由它定义的int型变量或int型参数可以直接参与运算。虚拟类型Q和T本身也不能直接参与运算,但是由它们定义的“T类型”或“Q类型”的参数x可以参与运算。所以,选项A中“Q+x”的表达是错误的。
        答案:A
    1.1.2  考点2:模板函数

        函数模板中声明的函数称为模板函数。
        调用一个模板函数的格式如下:
        函数名 <模板实参表> (函数实参表);
        或
        函数名(函数实参表);
        第二种格式中省略了所有的模板实参,使用这种格式是需要一定条件的(详见考点4)。
        类模板的成员函数都是模板函数。

           例1.1.3  以下函数模板max的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。
        template <typename T>
        T max (T a[], int n)
        {
         T m = a[0];
         for (int i = 1; i < n; i++)
            if (a[i]>m)          ;
            return m;
        }
        解析:本题考查模板函数的定义。在编写函数体时,模板函数与普通函数是一样的。根据题意,返回的m值应该是a中最大元素的值,所以当a[i]>m时,应该将较大的a[i]值赋给m。在遍历数组a[]后,最终m就保存了数组a[]中最大元素的值。
    1.1.3  考点3:函数模板的实例化

        在调用模板函数时,编译系统依据实际所使用的数据类型生成某个具体函数定义的过程称为函数模板的实例化。在实例化过程中,是用实际类型(如int、long等)替代虚拟类型的。
        实例化的过程或结果通常是看不见的,编译系统会根据函数调用的具体情况自动传递相应的模板实参,生成相应的函数实例。每一个实例就是一个函数定义。
        实例化过程中,除了可以用各种具体的C++固有数据类型取代虚拟类型,还可以用某些用户自定义类型来取代虚拟类型,这里的自定义类型包括结构体以及某些用户定义的类。

           例1.1.4  下列程序的输出结果是        。
        #include <iostream>
        using namespace std;
        template <typename T>
        T fun (T a, T b) {return (a<=b)?a:b;}
        int main()
        {
           cout<<fun(3,6)<<','<<fun(3.14F,6.28F)<<endl;
           return 0;
        }
        解析:本题定义了一个模板函数fun,其形参a、b及函数返回类型均为T类型。函数fun的功能是返回a、b中数值较小的数。在main函数中,第一次调用fun时,实际上是调用了“int fun(int a,int b)”这个函数,故返回整型数据“3”。第二次调用时,实际上是调用了函数“float fun (float a, float b)”,返回浮点型数据“3.14”。
        答案:3,3.14

        1.1.4  考点4:模板实参的省略

        在调用模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得信息:从“模板实参表”(在“<”和“>”之间)或从模板“函数实参表”(在“(”和“)”之间),“模板实参表”的信息优先于“函数实参表”的信息。如果从后者得到的信息已经能够判断其中部分或全部虚拟类型参数所对应的实际类型,而且它们又正好是“模板形参表声明”中最后的若干参数,则在“模板实参表”中可以省略这几个参数。如果所有的模板实参都被省略了,则空表“<>”也可以省略。

        但在以下情况中,模板实参是不能省略的。

        ① 从模板“函数实参表”中获得的信息有矛盾。例如,当编译系统从某一个函数实参中获得的信息是虚拟类型参数T(假设为T)对应的实际类型为int,可是从另一个函数实参中获得的信息却是虚拟类型参数T对应的实际类型为double时,就产生了矛盾。T不可能同时为
    int和double型,这将导致编译器无法找到匹配的函数模板的定义,编译时报错。解决这一问题的方法之一就是显示给出虚拟类型参数T对应的模板实参,强制T对应于int或是double。
        ② 虚拟类型参数用做函数的返回值类型,而且函数需要返回特定类型的值,而不管函数实参的类型是什么。在这种情况下,需要用模板实参强制虚拟类型参数对应于特定类型。
        ③ 虚拟类型参数没有出现在模板的“函数形参表”中。此时无法从模板的“函数实参表”中获取对应的信息,因而不能省略模板实参。
        ④ 函数模板含有常规形参。常规参数是用具体的类型修饰符(如int、double、char*等)定义的,对应的实参必须是常量表达式。因此,常规参数的信息无法从模板的“函数实参表”中获得,调用模板函数时必须显示给出对应于常规参数的模板实参。

           例1.1.5  有如下函数模板定义:
        template <class T>
        T func (T x, T y){ return x*x+y*y;}
        在下列对func的调用中,错误的是(   )。
        A.func(3,5);    B.func(3.0,5.5);  C.func(3,5.5);  D.func<int>(3,5.5);
        解析:对于本题中定义的模板函数,如果用选项C中“func(3,5.5);”的形式来调用,在编译时会出现“template parameter 'T' is ambiguous,could be 'double' or 'int' ”的错误,也就是说T对应的实际类型是不明确的。编译系统从第一个参数“3”获得的信息是“T对应于int”,而从第二个参数“5.5”处获得的信息是“T对应于double”,二者相互矛盾,因而编译时产生错误。
        选项D中提供了模板实参<int>,因为模板实参优先于函数实参,所以T对应的实际类型是明确的,在这里就是int型。在调用过程中,double型的参数“5.5”将被自动转换成int型。
        选型A和B所提供的两个函数实参的类型是一致的,不存在矛盾。
        答案:C

           例1.1.6  有如下函数模板声明:
        template <typename T>
        T Max(T a,T b) {return (a>=b)?a:b;}
        下列对函数模板Max的调用中错误的是(   )。
        A.Max(3.5,4.5)            B.Max(3.5,4)
        C.Max<double>(3.5,4.5)      D.Max<double>(3.5,4)
        答案:B

    展开全文
  • IDEA创建模板文件

    千次阅读 2022-02-14 16:44:10
    IDEA常用的模板文件,可以直接创建一个模板文件,下一次new新建时就可以直接使用模板了。本文有创建和修改介绍: 注意:这些配置文件,只是早期学习中需要,之后像 Spring Boot 都是给你配置好的,只需简单配置即可...

    IDEA常用的模板文件,可以直接创建一个模板文件,下一次new新建时就可以直接使用模板了。本文有创建和修改介绍:

    注意:这些配置文件,只是早期学习中需要,之后像 Spring Boot 都是给你配置好的,只需简单配置即可。

    创建新的模板文件具体步骤:

    1.打开创建模板窗口(两种方式)

    1.1 new-->Edit File Templates

    1.2 File -->Settings --> Editor-->File and Code Templates

     

     2.创建文件

    2.1创建模板文件

     2.2创建通用文件

     

    展开全文
  • c++函数模板做参数

    千次阅读 2016-12-04 16:14:20
    模板分为函数模板和类模板 今天我们来说说函数模板。 一:函数模版定义形式 template 类型形式参数表为: typename T1,typenameT2,......typenameTn 或者classT1,classT2,......classTn 函数模板声明形式 ...
  • 工作周报模板,研发部通用模板。工作周报模板,研发部通用模板。工作周报模板,研发部通用模板。工作周报模板,研发部通用模板
  • anki制作灵活简洁的英语单词模板

    千次阅读 2020-03-28 17:55:47
    anki自带的模板其实可以满足记单词的需求,但形式单一,用basic and reverse模板的话一个笔记只能产生2张卡片,如果一个单词有多个中文意思,那么我们在记忆的时候是看着所有的中文意思记忆一个单词,如果单独看不同...
  • 废话不多说,直接上步骤: 第一步:新建一个固定的模板vue.html,编辑好所需内容后,创建、保存即可; 第二步:退到桌面,找到“HBuilder...第三步:往后新建模板内容时,直接添加即可,无需重复手写代码啦! ...
  • 总结:入门篇总共列举了,基于相关性的模板匹配和基于形状的模板匹配,其中基于形状的模板匹配中一对多和多对多的情况。直接学习halcon的例程内容方便我们直接学习。 基于形状(最常用的。受光照有一定影响) 使用...
  • 在HTML中使用做模板

    千次阅读 2014-02-22 10:39:03
    有时我们会遇到在HTML中使用模板进行填充内容而又懒的使用文件操作(如XML)。 可以用本文中的方法: ... --------- ...然后在JS中先定义用于对带[]的内容替换的正则表达式var reg = new RegExp(
  • 功能需求梳理模板

    2018-09-19 14:21:53
    这是一份功能需求模板开发时候经常要写功能需求分析
  • 比如我有一个在婚庆行业小编的伙伴,他们的公众号里都会不定期的推送一些不同系列的婚纱照风格,时间长了文章数量也很多,当给客户展示的时候找起来非常的麻烦,经常需要花费大量的时间都找不到自己需要的内容。...
  • Proxmox ve 6.2 模板制作并创建VM

    千次阅读 2020-10-14 18:21:14
    Proxmox ve 6.2 模板制作并创建VM 本文主要介绍下模板的制作涉及到cloud-init(这玩意很方便),VM模板用一些官方的image,这里以CentOS7为例 VM模板制作 下载image模板 CentOS 官方镜像站 ...下载最新的 CentOS-7-x86_...
  • C++模板(函数模板/类模板)

    千次阅读 多人点赞 2021-06-07 16:30:12
    函数模板 一.泛型编程 在引入泛型编程之前,我们先来看这样一个问题,怎么做到实现一个通用的交换函数呢? 在C语言阶段我们可能会像下面这样写,需要分别实现不同类型的交换函数,又由于C语言不允许出现同名函数,所以函数...
  • 用EXCEL的预算模板

    2009-08-22 13:27:40
    这是个某企业用的EXCEL的预算模板,用于企业的预算管理上还是不错的,希望能给各位有帮助.
  • Labview 模板学习和匹配

    千次阅读 2019-12-16 09:56:38
    1.ROI区域选择 2选择MARK区域 2 3学习 4模板匹配
  • 有句话说“闲时无计划,忙时多费力”,好的计划让你的思维清晰,能创造出事半功倍的效果,由此可见计划对我们的重要性,而利用思维导图我们可以快速地各种事情的规划,接下来我分享一些用思维导图计划的模板,...
  • C++——模板(超详细的模板解析)

    万次阅读 多人点赞 2022-03-28 17:29:35
    超详细的C++模板知识列表,持续维护。
  • 上期讲到视觉助手一些自带例程,初步了解了视觉助手中的一些函数功能,那么...利用模板匹配可以一些有无检测,物料定位等视觉检测功能。 下面给大家演示如何使用模板匹配功能 百度网盘视频链接:https://pa.
  • 百度收费太贵了,找了一个之前的,拿出来分享给大家,项目进度排期表模板,项目时间节点控制,可具体到责任人,EXCEL模板
  • 精美的ppt模板2

    热门讨论 2013-09-18 11:27:19
    网络模板上文已经过介绍,这里不再重复。灵活选用幻灯片模板PowerPointXP之前版本调用模板很死板,演示文稿中的幻灯片只能应用同一种模板。PowerPointXP对此作了很大的改进,你可以给演示文稿中的幻灯片选用各种...
  • c++ 模板

    千次阅读 2022-06-16 10:47:53
    模板是c++的一种特性,允许函数或者类(对象)通过泛型(generic types)的形式表现或者运行模板可以使得函数或类在对应不同的类型(types)的时候正常工作,而无需为每一种类型分别写一份代码。1:函数模板...
  • C++函数模板模板函数)详解

    万次阅读 多人点赞 2019-07-04 16:03:01
    C++函数模板模板函数)详解定义用法:函数模板的原理延申用法2.1为什么需要类模板2.2单个类模板语法2.3继承中的类模板语法案例1:案例2:2.4类模板的基础语法2.5类模板语法知识体系梳理1.所有的类模板函数写在类的...
  • 区别于传统的excel下载方式,不用手动去设置excel样式,只要把设好样式的excel模板引入进去就行了
  • 这里我想分享下如何用VMware Workstation中的克隆功能来制作虚拟机模板。其实在我们这一行中,也许并没有那么多的机会去接触服务器,更别说用服务器来测试机,搭建测试环境了。所以这里要特别感谢像VMware ...
  • 过Shopify的卖家知道,Shopify里面的主题就像一个框架,你可在这个框架内填写内容,但是,你会发现这也是他的一个弊端,比如: 你的主题页面是80%宽度的,不管你填写什么内容,在Shopify上面怎么改,调整,他都...
  • ArcGIS中属性要素模板通常将图形与属性操作结合在了一起,避免了对属性的再操作,使用时只需要建好模板就可很便捷的操作,如下效果: 具体步骤为: 一 、首先创建要素类别。 二、在符号系统中,类别-&gt;...
  • 如何选择和使用ACM LaTeX模板

    千次阅读 多人点赞 2022-05-27 16:00:57
    1. ACM模板 ACM模板是发表会议论文常用的模板之一,但是学术新人通常搞不懂到底怎么用、怎么选模板,本博客解决帮你这个问题。 2. 下载ACM模板 我们进入ACM模板下载页面:ACM 模板 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 789,082
精华内容 315,632
关键字:

如何做模板