Это звучит как типичная ситуация, когда правила не разрешают доступ к вашей базе данных. Проверьте правила и убедитесь, что это позволяет писать
"rules":
{
".read": true,
".write": true,
}
У GCC есть опция -Wold-style-cast
, которая предупредит вас, если найдет какие-либо приведения в стиле C.
К сожалению, нет В Visual C ++ нет предупреждения компилятора, которое указывает на эти приведения (по крайней мере, не одно, о котором я знаю), хотя похоже, что PC-Lint действительно предоставляет предупреждение / примечание, которое предупреждает вас, если вы используете приведение в старом стиле. Зависит от того, готовы ли вы потратить деньги на PC-Lint - на мой взгляд, это определенно стоит того, чтобы решить все проблемы, с которыми вы можете столкнуться ...
Я не знаю переключателя компилятора, который сообщает об этом или о чем-либо другом, встроенном в Visual Studio.
Однако вот Perl-скрипт , который выполнит поиск в вашем дереве исходных текстов и найдет все приведенные в нем типы C стиля. Он довольно хорошо работает для их отслеживания.
Зачем это вам? Вы хотите избавиться от них всех?
Приведение типов в стиле C для таких фундаментальных типов, как (double)
, безопасно и выглядит намного лучше, чем static_cast
. Я лично предпочитаю этот стиль.
В случае полиморфных классов проблема приведения типов в стиле C сильно преувеличена imho. Это может быть проблемой, только если вы используете множественное наследование и должны выполнять перекрестное приведение. По умолчанию приведение типов в стиле C там не работает. Но в большинстве случаев ()
работает точно так же, как static_cast <> ()
, и я бы не стал тратить время на их замену. Во всяком случае, для полиморфных типов я использую приведение типов в стиле C ++, когда пишу новый код или что-то меняю.
ОБНОВЛЕНИЕ:
Ребята, похоже я не очень четко выразил свое мнение. Да, я знаю теорию: C ++ - кастинг хорош, C-cast - это зло. Это правило (и большинство других) необходимо для избавления новичков от C ++. Но это не значит, что вам всегда нужно следовать ему.
Я хочу сказать, что приведение типов в C не так уж и ужасно. Если вы напишете какую-нибудь функцию вроде
int convertFooToBar(double i_foo)
, нет причин для использования приведения в стиле C ++ в реализации. Они не безопаснее, чем (int)
, но выглядят беспорядочно. Кастинг в этом случае не составляет труда. В приведении типов нет ничего плохого или сложного: иногда приведение является естественным.
О поиске: я не помню, чтобы я искал какой-либо оператор приведения за последние 10 лет, хотя я поддерживаю несколько миллионов строк из наследия Код на C ++ ежедневно. Я даже не помню серьезных проблем из-за неправильного приведения
Изначально вопрос касается замены уже написанных приведения в стиле C. Итак, мой ответ:
Да, безопаснее, чем у C. Но это не означает, что вам нужно искать для старых в вашем коде и попробуйте избавься от них всех. На самом деле это не проблема. Только не трать время зря. Вы можете потратить их на поиск и удаление устаревшего кода. Это было бы более полезно для вашей базы кода.