Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类函数的默认模板参数:在哪里指定?_C++_Templates_C++11_Default - Fatal编程技术网

C++ 类函数的默认模板参数:在哪里指定?

C++ 类函数的默认模板参数:在哪里指定?,c++,templates,c++11,default,C++,Templates,C++11,Default,对于C++2011中的每种情况,我必须在哪里指定类成员函数的默认模板参数(假设声明(当然)在“类主体”中,并且函数定义在类主体之外): “正常”功能 静态函数 好友功能 在定义中,在声明中或两者中?在叮当声中尝试这些建议如下: 对于非静态和静态函数,在定义或 该声明是可以接受的,但不是两者都可以接受,如果 它们相互矛盾 对于friend函数,指定 类定义中的默认值会导致错误 嗯, 根据我创建模板类和方法的经验,可以指定如下模板函数: template<typename T> T

对于C++2011中的每种情况,我必须在哪里指定类成员函数的默认模板参数(假设声明(当然)在“类主体”中,并且函数定义在类主体之外):

  • “正常”功能
  • 静态函数
  • 好友功能

在定义中,在声明中或两者中?

在叮当声中尝试这些建议如下:

  • 对于非
    静态
    静态
    函数,在定义或 该声明是可以接受的,但不是两者都可以接受,如果 它们相互矛盾
  • 对于
    friend
    函数,指定
    定义中的默认值会导致错误
    • 嗯, 根据我创建模板类和方法的经验,可以指定如下模板函数:

      template<typename T>
      T MyFunc(T &aArg1, T &aArg2)
      {
          //...Definition Goes Here
      }
      
      正如你所看到的,这并不难。现在,静态函数的定义方式与您只需确保在类内置的同一模块中定义相同,否则将出现错误


      不幸的是,我从来没有真正使用过“朋友”的方法,所以我不知道如何解决这个问题。我怀疑你会像其他两个那样做。我希望整篇文章的答案都能有所帮助。

      你的“定义”和“声明”似乎都有倒退。类主体包含成员函数声明,而它们的定义可以放在外部。是的,我犯了一个错误。现在我认为这是正确的,因为必须在声明中为类定义默认模板参数,所以我倾向于将所有默认模板参数都放在声明中。IMO有部分原型。同样的道理也适用于方法的默认参数。您是否错过了关于默认模板参数的问题?如果你用谷歌搜索这个短语,你可以了解他们。
      class MyClass
      {
         MyClass();
         ~MyClass();
      
         template<typename T> 
         static T MyStaticFunc(T aArg) { return aArg; }
      
      
         template<typename T> 
         T MyFunc(T aArg) { return aArg; }
      }