gpt4 book ai didi

c++模板偏特化成员函数

转载 作者:IT老高 更新时间:2023-10-28 12:38:49 24 4
gpt4 key购买 nike

我是模板新手,所以这可能是一件微不足道的事情,但我无法让它发挥作用。我正在尝试对类成员函数进行部分特化。最短的代码是:

template <typename T, int nValue> class Object{
private:
T m_t;
Object();
public:
Object(T t): m_t(t) {}
T Get() { return m_t; }
Object& Deform(){
m_t*=nValue;
return *this;
}
};

template <typename T>
Object<T,0>& Object<T,0>::Deform(){
this->m_t = -1;
return *this;
}

int main(){
Object<int,7> nObj(1);
nObj.Deform();
std::cout<<nObj.Get();
}

我尝试过使用非成员函数,效果很好。还可以正常工作的是成员函数的完全特化。

但是,每当我尝试使用部分规范时。的成员函数我得到形式的错误:

PartialSpecification_MemberFu.cpp(17): error: template argument
list must match the parameter list Object<T,0>& Object<T,0>::Deform().

不胜感激:-)

最佳答案

你不能只部分特化一个成员函数,你必须部分特化整个类。因此你需要类似的东西:

template <typename T>
class Object<T, 0>
{
private:
T m_t;
Object();
public:
Object(T t): m_t(t) {}
T Get() { return m_t; }
Object& Deform()
{
std::cout << "Spec\n";
m_t = -1;
return *this;
}
};

关于c++模板偏特化成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374841/

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