为什么实例化 class 没有成员?

Why instantiate class with no members?

我目前正在处理一些遗留代码并且遇到了一个 class 没有成员只有一个方法。

class CommandClass
{
public:
  ModelData execute(std::string filter);
};

class 的实例是用 'new' 创建的,只是为了调用它的函数。这样做有充分的理由还是我应该将 class 更改为名称空间?

编辑:所以根据评论,我回去审查了代码。我确实忘记把 public: 放在 class 中,但是函数之前没有虚拟,所以我认为它不能用作接口。

您应该为您的问题提供更多背景信息。

实际上有很多理由让 类 没有会员。它们主要用于对行为方面进行建模。

我怀疑 CommandClass 旨在用于模板模型上下文,这需要模板参数类型来实现 èxecute() 方法。

考虑以下模板:

template<class T>
ModelData foo(T command) {
    auto str = "foo"s;
    return T.execute(str);
}

您可以将具有成员函数 ModelData execute(std::string) 的任何类型的实例传递给该函数。这样的类型可能有也可能没有状态(成员变量)。

CommandClass 可能被设计为类似模板的参数。实例化* class 将是调用模板函数所必需的,即使 execute.

没有可以使用的状态

这只是一种可能。如果没有文档,你就得问写代码的人了。

*没有更多细节,我看不出 好的 理由用 new 实例化。