gpt4 book ai didi

c++ - 类模板化 std::set 键类型

转载 作者:行者123 更新时间:2023-11-28 01:09:00 25 4
gpt4 key购买 nike

我有一个评估集合代数的类(class),但希望将其模板化。

目前看起来有点像这样

设置.h:

template<typename T>
class SetEvaluation
{
public:
SetEvaluation<T>();

std::set<T>
evaluate(std::string in_expression);
}

设置.cpp

template<typename T>
std::set<T>
SetEvaluation<T>::evaluate(std::string expression)
{
std::set<T> result;
etc etc...
}

但是我在编译时遇到 undefined reference 错误。

是否可以将返回类型声明为 std::set 然后将 std::string 作为类模板参数传递。

类中没有错误,但只有当我尝试实例化 SetEvaluation 时才会出现错误

谁能阐明这个问题?

谢谢

最佳答案

模板类和函数有点特殊,需要在头文件中定义。然后,无论您要使用该模板类在哪里,都需要将该头文件包含在#included 中。如果您尝试在链接器的 cpp 文件中定义模板函数并尝试从另一个 cpp 文件调用该函数,则链接器将无法解析引用,因为编译器不知道使用什么参数 T当它编译带有模板定义的文件时。解决此问题的最佳方法是 1) 在头文件中定义函数和 2) 在需要的地方#include 它。在 C++ faq 上有关于此问题的更多信息.

琐事

还有另一种方法可以使用 Comeau C++ 编译器来解决这个问题,因为它支持“export”关键字,但是该关键字在 C++0X 中已被弃用。

关于c++ - 类模板化 std::set 键类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515010/

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