Я довольно новичок в c ++ ...
Стандартное предупреждение об «изучении языка»: вы пишете не на C ++, а на C ++ / CLI. C ++ / CLI - это язык от Microsoft, предназначенный для обеспечения взаимодействия C # или других языков .Net со стандартом C ++. В этом сценарии C ++ / CLI может обеспечить перевод между ними. Если вы все еще изучаете C ++, пожалуйста, не начинайте с C ++ / CLI. Чтобы эффективно писать на C ++ / CLI, нужно уже знать и C ++, и C #, и еще есть кое-что, что можно узнать о C ++ / CLI. Если вы хотите изучать C ++, придерживайтесь стандартного (неуправляемого) C ++. (В Visual Studio создайте проект C32 "Win32".) Если вы хотите изучить управляемый код, я бы использовал C #.
Это сказал ...
int Main(array<System::String ^> ^args)
Я не исследовал почему, но по какой-то причине VS2017 сначала находит std::array
, а VS2013 сначала находит cli::array
. Как вы, вероятно, догадываетесь по полученному сообщению об ошибке, эти два класса принимают разные шаблонные / общие параметры. (std::array
принимает тип и размер, cli::array
принимает тип и размер указывается при создании объекта.)
Чтобы это исправить, вы можете явно указать cli::
в объявлении main. Также может быть using namespace std;
, который необходимо удалить, или добавление using namespace cli;
также может сработать.