相关疑难解决方法(0)

在C++中选择重载模板函数时的优先级

我有以下问题:

class Base
{
};

class Derived : public Base
{
};

class Different
{
};

class X
{
public:
  template <typename T>
  static const char *func(T *data)
  {
    // Do something generic...
    return "Generic";
  }

  static const char *func(Base *data)
  {
    // Do something specific...
    return "Specific";
  }
};
Run Code Online (Sandbox Code Playgroud)

如果我现在这样做

Derived derived;
Different different;
std::cout << "Derived: " << X::func(&derived) << std::endl;
std::cout << "Different: " << X::func(&different) << std::endl;
Run Code Online (Sandbox Code Playgroud)

我明白了

Derived: Generic
Different: Generic
Run Code Online (Sandbox Code Playgroud)

但我想要的是,对于从Base派生的所有类,调用特定方法.所以结果应该是:

Derived: Specific
Different: …
Run Code Online (Sandbox Code Playgroud)

c++ methods templates overloading

16
推荐指数
2
解决办法
3640
查看次数

标签 统计

c++ ×1

methods ×1

overloading ×1

templates ×1