gpt4 book ai didi

C++ 模板 : unable to match function definition to an existing declaration

转载 作者:行者123 更新时间:2023-11-28 02:36:16 25 4
gpt4 key购买 nike

我目前正在为我的游戏引擎设计一个模板化的 Vector2 类。

为了保持一切整洁,我一直将函数声明和定义分开。这对构造函数工作正常,但是,当我尝试对静态函数执行相同操作时出现以下错误:

error C2244: 'spl::Vector2<T>::Dot' : unable to match function definition to an existing  declaration
1> definition
1> 'T spl::Vector2<T>::Dot(const spl::Vector2<L> &,const spl::Vector2<R> &)'
1> existing declarations
1> 'T spl::Vector2<T>::Dot(const spl::Vector2<L> &,const spl::Vector2<R> &)'

我发现不寻常的是,尽管声明和定义相同,但编译器无法匹配它们。

这是我的 Vector2 类:

// The Vector2 Class
template <typename T>
class Vector2{
public:

// Constructor
Vector2 ();
Vector2 (T Value);
Vector2 (T XAxis, T YAxis);

// Static Functions
template <typename L, typename R>
static T Dot (const Vector2 <L>& LHS, const Vector2 <R>& RHS);

// Variables
T x, y;
};

下面是函数声明:

// Return The Dot Product Of Two Vectors
template <typename T, typename L, typename R>
T Vector2 <T>::Dot (const Vector2 <L>& LHS, const Vector2 <R>& RHS){

T xAxis = (T) LHS.x * (T) RHS.x;
T yAxis = (T) LHS.y * (T) RHS.y;

return (xAxis + yAxis);
}

如果有人知道为什么会抛出这个错误以及如何解决它,我将永远感激你。

附言我在 Windows 8.1 机器上使用 Visual Studio 2013 Ultimate。

最佳答案

语法需要是:

template <typename T>
template <typename L, typename R>
T Vector2 <T>::Dot (const Vector2 <L>& LHS, const Vector2 <R>& RHS){

T xAxis = (T) LHS.x * (T) RHS.x;
T yAxis = (T) LHS.y * (T) RHS.y;

return (xAxis + yAxis);
}

关于C++ 模板 : unable to match function definition to an existing declaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328797/

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