gpt4 book ai didi

c++ - 在 C++ 中创建泛型函数

转载 作者:行者123 更新时间:2023-11-30 00:40:33 26 4
gpt4 key购买 nike

我尝试在 C++ 中创建一个通用函数,它创建一个类型的数组,该类型的数组取决于用法(调用它时),例如 int 或 char 数组。

这是我的头文件中的代码:

template<class T>
T** makeArray(...);

这是在 .cpp 文件中:

template<class T>
T** ClassA::makeArray(...){
//...
}

这就是我在主文件中的调用方式:

char** charArr = cg.makeArray<char>(...);
//...
int** intArr = cg.makeArray<int>(...);

但是在编译时,我得到了这些错误:

undefined reference to `char** ClassA::makeArray<char>( ...
undefined reference to `int** ClassA::makeArray<int>( ...

这些错误是什么意思,我该如何解决?

最佳答案

您必须在 header 中包含 C++ 模板函数的整个主体。

这是因为 C++ 模板的工作方式:模板参数替换仅在您实际使用模板时发生,并且整个模板定义必须在那时可见。另一种看待它的方式是说您无法编译和链接到 templateFunction<T>。 ——你只能编译一个模板函数,一旦它被实例化为 templateFunction<char>管他呢。因此,您不能将模板函数定义放在 .cpp 中。文件,而是必须将它们放在 .h 中文件。

关于c++ - 在 C++ 中创建泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5779379/

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