gpt4 book ai didi

c++ - 如何为非模板类​​定义模板方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:34 34 4
gpt4 key购买 nike

我的编译器对我实现模板方法的方式不满意。它为这些实现提供大量 错误消息,例如“未定义的类型 T”。

这是我的第一个方法,它是在类 block 之外实现的:

class VectorConvertor
{
public:
// ...
template <class T>
static void ReverseVectorElements(std::vector<T> & Vector);
// ...
};

template <class T>
void VectorConvertor::ReverseVectorElements(std::vector<T> & Vector)
{
std::vector<T>::size_type size = Vector.size();
T swap;
for (std::vector<T>::size_type i=0; i<size/2; i++)
{
swap = Vector.at(i);
Vector.at(i) = Vector.at(size-1-i);
Vector.at(size-1-i) = swap;
}
}

另一个是这个;这次方法是在类内部实现的:

class ElementaryMath
{
public:
// ...
template <class T> static char sign(T num)
{
return (num >= static_cast<T>(0)) ? static_cast<char>(+1) : static_cast<char>(-1);
}
// ...
}

我的代码有什么问题吗,或者这只是编译器本身的问题?

IDE 和编译器:Visual Studio 2010

最佳答案

我觉得你的代码没问题。但是我想到了一件事。你能检查一下之前是否定义了函数“sign”吗?只需将鼠标悬停在上面即可。 C 运行时库使用“#define”关键字实现它的一些函数,因此您之后不能定义具有相同名称的函数。

关于c++ - 如何为非模板类​​定义模板方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4723880/

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