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

标签 c++ factory

我有很多转换功能的类(class):

class Something {
  public:

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

    static Something fromXml(string);  // factory
    static Something fromJson(string); // factory
    ...
};

因为可以在实例上调用静态函数, 写这样的代码很容易:

Something sss;

... initializing sss ...

string xml1 = sss.toXml();
sss.fromXml(xml1); // does nothing
string xml2 = sss.toXml();
assert(xml1 == xml2); // always true

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

有没有办法做到这一点?

最佳答案

他们真的需要成为类(class)成员吗?防止这种情况的明显方法是使它们成为自由函数。

关于c++ - 我可以禁止在对象实例上调用静态方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207320/

相关文章:

c++ - "missing return statement",但我知道它在那里

父类(super class)中的java静态工厂

java - 扩展静态工厂方法模式

javascript - 试图理解以工厂和基于函数的混合技术为特征的对象组合模式

c++ - 如何按降序和第二个元素对 vector 对进行排序?

c++ - 如何集中 QTreeWidget header

c++ - 重载 operator<< operator== 和 operator!=

javascript - ng-click 没有触发工厂类

javascript - angularjs 在不同文件中为同一模块定义服务

java - 套接字复位是什么原因