gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:29:43 24 4
gpt4 key购买 nike

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()
}

最佳答案

问题有点不清楚,如果我的理解有误,请见谅。

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

Array<char> c;
c.mf();

要使其工作,必须有一个 Array<T>::mf() 的定义Array<char>时可用被显式实例化,或者是 Array<char>::mf() 的特化定义。所以上面的代码将工作,如果你有:

template <typename T> void Array<T>::mf() {cout << "Hello\n";}
template class Array<char>;

template <> void Array<char>::mf() {cout << "Hello\n";}

关于c++ - 如何从模板中的 main() 调用显式实例化声明函数?你能用下面给出的代码解释一下吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com