我有很多转换功能的类(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/