vvafree
@vvafree
Профессионально задаю глупые вопросы, пишу на C++

Проблемы с компиляцией в visual studio 2015, после адаптации с visual studio 2010. Что делать?

Проект был написан в visual studio 2010. Перевел в visual studio 2015, но начали возникать проблемы. Почти ото всех избавился, но осталась проблема с std::array.

Файл Form1.h, как я понял это файл для конструктора форм.
Example::top_cornea = gcnew array<int>(bmp->Width);
 Example::bottom_cornea = gcnew array<int>(bmp->Width);
 Example::x1_width= gcnew array<int>(bmp->Width);
 Example::x2_width= gcnew array<int>(bmp->Width);
 Example::width_cornea= gcnew array<int>(bmp->Width);


Пишет ошибки:
1. Требуется спецификатор типа
2. Недостаточно аргументов для шаблона класса std::array

Поискал в интернете, нашел такой вариант, но ошибки не пропадают.
Example::top_cornea = gcnew array<int, (bmp->Width)>;
 Example::bottom_cornea = gcnew array<int, (bmp->Width)>;
 Example::x1_width= gcnew array<int, (bmp->Width)>;
 Example::x2_width= gcnew array<int, (bmp->Width)>;
 Example::width_cornea= gcnew array<int, (bmp->Width)>;


Уже второй день копаюсь, уже переделал бы эту форму, но код не мой, боюсь ещё больше закопаться.
  • Вопрос задан
  • 927 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
Похоже, где-то добавили using namespace std, из-за чего array признается как std::array вместо cli::array
Либо уберите using namespace std, либо явно укажите cli везде, где необходимо:
gcnew cli::array(...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Ariox41
std::array создается на стеке как обычный сишный массив и требует указания размера во время компиляции, примерно так: std::array<int, 3> array = {1, 2, 3};

Edit: Возможно, там нужен не std::array, а что-то другое, но где-то использован using namespace std
Edit: Не сразу въехал во вторую часть. Шаблонный параметр должен быть известен во время компиляции, т.е. bmp->Width должен быть constexpr или statc constexpr с соответствующим синтаксисом обращения. Динамические массивы в С++ - это std::vector, у вас скорее всего использовался array из CLI, но в CLI я не разбираюсь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы