我刚刚发现XCode(版本3.2.3)没有找到一些明显的语法错误。我的应用程序使用Obj-C(用于界面)和C ++(用于应用程序的其余部分)的组合。这是一个例子:
class Bike
{
Bike (Bike ©, boolean v) { .. }
Bike (boolean v) { .. }
}
class Data
{
static *Bike findBikeByID (int id) { .. }
}
有问题的电话如下:
void function ()
{
Bike item = Data::findBikeByID (123); // error
// correct code (Data::findBikeByID returns a pointer, not a reference)
// Bike * item = Data::findBikeByID (123); // correct
}
它未能报告的另一个错误是:
void function (Bike *input)
{
Bike *b = new Bike (*input); // error, should pass 2 arguments
}
Bike(Bike& copy,boolean v)在构造函数中有两个参数。它可能与第二个构造函数Bike(boolean)混淆,但即使我指定:
Bike *b = new Bike ((Bike &)*input);
没有发现任何问题。
为什么会发生这种情况?是否有任何编译器设置可以控制它?