这是我之前的问题的后续。
我有一堆像这样的Objective-C代码:
typedef long DataKey;
DataKey x;
DataKey y;
if (x == y) {
// do stuff
}
我现在需要更改DataKey
为对象而不是long
. 如果我创建类并进行大量全局搜索和替换,我的代码现在有点像这样:
@interface DataKey : NSObject
DataKey *x;
DataKey *y;
if (x == y) { // uh-oh - this is now bad, I need isEqual: here
}
由于没有编译器警告来检测使用==
带有两个对象指针的运算符,我正在寻找另一种解决方案。
一种想法是使用 C++ 类并==
以编译器会抱怨的方式重载运算符。
我对 C++ 的了解几乎不如 Objective-C。我已经能够编写 C++ 类,现在我的代码实际上会导致operator==
方法被调用。现在我需要帮助想出一种调整代码的方法,以便我收到编译器警告。
这是 C++ 类:
class DataId {
public:
DataId();
bool operator==(const DataId &other);
};
现在我有一些像这样的 Objective-C++ 代码:
DataId x;
DataId y;
if (x == y) { // I need a compiler warning/error here
}
是否有一个语法技巧可以引起if
语句上的编译错误/警告。