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