首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从模板中的main()调用显式实例化声明函数?你能用下面给出的代码来解释吗

如何从模板中的main()调用显式实例化声明函数?你能用下面给出的代码来解释吗
EN

Stack Overflow用户
提问于 2010-04-28 20:10:35
回答 2查看 108关注 0票数 0
代码语言:javascript
复制
template<class T> 
class Array 
{
 public:void mf(); #1
};
template class Array<char>;      // explicit instantiation #2
template void Array<int>::mf();  // explicit instantiation #3

void main()
{
  Array<double> a; // implicit instantiation

// my question is how to call mf() in #2 (explict declaration)from main()
}
EN

回答 2

Stack Overflow用户

发布于 2010-04-28 20:38:56

这个问题有点不清楚,所以如果我弄错了,很抱歉。

您可以在显式实例化上调用函数,就像在隐式实例化上一样。

代码语言:javascript
复制
Array<char> c;
c.mf();

要实现这一点,必须在显式实例化Array<char>时提供Array<T>::mf()的定义,或者定义Array<char>::mf()的专门化。因此,如果您满足以下任一条件,上述代码都将正常工作:

代码语言:javascript
复制
template <typename T> void Array<T>::mf() {cout << "Hello\n";}
template class Array<char>;

代码语言:javascript
复制
template <> void Array<char>::mf() {cout << "Hello\n";}
票数 1
EN

Stack Overflow用户

发布于 2010-04-28 20:36:48

代码语言:javascript
复制
a.mf();

(如果您真的不知道,Stackoverflow不是您需要的。在here上寻求帮助。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2729248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档