小编Iva*_*van的帖子

我可以禁止在对象实例上调用静态方法吗?

我有一些有很多转换函数的类:

class Something {
  public:

    string toXml();
    string toJson();
    ...

    static Something fromXml(string);  // factory
    static Something fromJson(string); // factory
    ...
};
Run Code Online (Sandbox Code Playgroud)

因为可以在实例上调用静态函数,所以很容易编写如下代码:

Something sss;

... initializing sss ...

string xml1 = sss.toXml();
sss.fromXml(xml1); // does nothing
string xml2 = sss.toXml();
assert(xml1 == xml2); // always true
Run Code Online (Sandbox Code Playgroud)

所以我想禁止在对象上调用xXX,或者至少让它们做一些不同的事情.

有没有办法做到这一点?

c++ factory

15
推荐指数
2
解决办法
2718
查看次数

标签 统计

c++ ×1

factory ×1