Я только что обнаружил, что некоторые явные синтаксические ошибки не были обнаружены 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 (логическим), но даже если я укажу:
Bike *b = new Bike ((Bike &)*input);
он не замечает никаких проблем.
Есть идеи, почему это происходит? Существуют ли какие-либо настройки компилятора, управляющие этим?