gpt4 book ai didi

c++ - 使用基类的函数模板特化

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

我环顾四周,没有找到我要找的东西。基本上我想要一个由基类专门化的函数模板。我不知道如何让它使用专门的功能。

意义...

class IBase
{
public:
virtual std::string func() const = 0;
};

class MyClass : public IBase
{
public:
std::string func() const { return "From MyClass"; }
};

template <class T>
std::string get_func(const T* t)
{
return "Unknown";
}

template <>
std::string get_func<IBase>(const IBase* t)
{
return t->func();
}

int main()
{
int a;
MyClass b;

get_func(&a); // <- Returns 'Unknown'. Good.
get_func(&b); // <- Returns 'Unknown'. Bad, want 'From MyClass'.
}

我使用 const T* 的原因是因为 IBase 是抽象的。

最佳答案

只需使用重载函数即可。

std::string get_func(const IBase *t) {
return t->func();
}

重载函数总是在模板之前选择。

关于c++ - 使用基类的函数模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21563367/

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