gpt4 book ai didi

c++ - 对具有 C++ 模板方法的函数的 undefined reference

转载 作者:太空狗 更新时间:2023-10-29 22:53:05 26 4
gpt4 key购买 nike

为什么我在调用此类中的方法时会得到对这些方法的 undefined reference ?我会被迫在头文件中包含实现,还是有其他方法可以更好地做到这一点?

class MathHelper
{
public:
/*!
Represents the ratio of the circumference of a circle to its diameter,
specified by the constant, p. This value is accurate to 5 decimal places.
*/
static const double pi = 3.14159;

template <typename T> static const T modulo(const T &numerator, const T &denominator);
static const double modulo(double numerator, double denominator);
static const float modulo(float numerator, float denominator);
template <typename T> static const T& clamp(const T &value, const T &min, const T &max);
template <typename T> static const T wrap(const T &value, const T &min, const T &max);
template <typename T> static bool isPowerOfTwo(T number);
template <typename T> static T nearestPowerOfTwo(T number);
static float aspectRatio(const QSize &size);
template <typename T> static float aspectRatio(T width, T height);
template <typename T> static T degreesToRadians(T degrees);
template <typename T> static T radiansToDegrees(T radians);
template <typename T> static T factorial(T n);

private:
MathHelper() { }
};

最佳答案

我想你的问题的解释和答案是这个C++ faq lite answerthe next ones

基本上,由于模板是实例化的模式,任何需要它的代码单元都必须知道如何实例化它。因此,最简单的方法是在头文件中定义模板(就像 boost 一样)。 C++ faq lite 提供了另一种方法来做到这一点。依我拙见,我觉得比较麻烦...

我的2c

关于c++ - 对具有 C++ 模板方法的函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108311/

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