调用从模板派生的类的静态方法,而不指定模板

Call a static method of a class derived from template without specifying template

本文关键字:派生 调用 静态方法      更新时间:2023-10-16

我将尝试用一个简单的例子来解释我的问题:

class UselessClass {};
template<class RUNNABLE>
class Task : public RUNNABLE
{
public:
static void StartScheduler()
{
//Start system scheduler
}
};

主.cpp

Task<UselessClass>::StartScheduler(); //Correct
//Task::StartScheduler();   //Wrong

我想做的是编写以下代码:Task::StartScheduler();

你不能。模板不是一个类,如果不提供模板参数,就无法调用它,以便编译器知道要从中调用方法的确切类型。

当您尝试使用Task::StartScheduler();时,编译器无法知道RUNNABLE模板参数的类型。

你可以做这样的事情:

using UselessTask = Task<UselessClass>;
UselessTask::StartScheduler();

虽然这不是你想要的,