Предупреждение C4564 при создании проекта C ++ / CLI, который использует набор данных со строгой типизацией - PullRequest
3 голосов
/ 22 июня 2010

После обновления до VC ++ 2010 возникает предупреждение C4564 (метод определяет неподдерживаемый параметр по умолчанию) при создании проекта C ++ / CLI, который использует набор данных со строгим типом данных из проекта C #.

ReadersManager.cpp (311): предупреждение C4564: метод 'SetNewRecord' класса 'System :: Data :: DataTable' определяет неподдерживаемый параметр по умолчанию 'action'

Укажите значение '2' явным образом при вызове метода

Эта диагностика возникла при импорте типа 'System :: Data :: DataTable' из сборки 'System.Data, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'.

Эта диагностика возникла при импорте типа 'System :: Data :: TypedTableBase' из сборки 'System.Data.DataSetExtensions, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'.

Эта диагностика возникла при импорте типа «MyProductDataStoreCLR :: ReadersDataSet :: ReadersDataTable» из сборки «MyProductDataStoreCLR, версия = 4.5.0.9, культура = нейтральная, PublicKeyToken = ноль».

Предупреждение вызывается при вызове на System::Data::DataTable::Select, поэтому я ничего не могу изменить в коде вызова, относящемся к SetNewRecord.

Это проблема C ++ / CLI, не поддерживающая новую возможность необязательных параметров C #?

1 Ответ

9 голосов
/ 22 июня 2010

Это предупреждающее сообщение 4-го уровня, попадающее в категорию «это когда-нибудь может привести вас в задницу». Поддержка вызова методов со значениями параметров по умолчанию без указания значения является пятнистой в языках .NET. VB.NET всегда имел это, C # только что приобрел его в версии 4. C ++ / CLI не поддерживает его и, конечно, никогда не будет. Что примечательно, потому что язык C ++ поддерживает . Программист C ++ / CLI вполне может быть удивлен этим, таким образом, предупреждение.

Вы ничего не можете сделать с предупреждением, код для набора данных генерируется автоматически. В противном случае это совершенно безобидно, если вы вызываете метод без предоставления значения для аргумента значением по умолчанию, то вы получите ошибку компилятора.

Просто отключите предупреждение с помощью #pragma warning(disable:4564) или Project -> Свойства -> C / C ++ -> Advanced - > Отключить определенные предупреждения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...