2013-02-16 2 views
1

Я получаю сообщение об ошибке с VS2012 x64 express edition. Тот же код работает правильно в VS2010. Я прошел через множество потоков здесь, в stackoverflow, и это похоже на ошибку в VS2012.std :: vector; невозможно преобразовать параметр; Visual Studio 2012

Код:

typedef vector< vector<cv::Point2d> > vec_type; 
vec_type table; 
table.assign(100, 0); 

Ошибка:

error C2664: ' void std::vector<_Ty>::assign(unsigned __int64, const std::vector<cv::Point2d> &) ' : cannot convert parameter 2 from ' int ' to ' const std::vector<_Ty> & '

решение Пожалуйста, кто может указать, или обойти эту проблему?

Благодаря

+3

Это не ошибка в VC++ 2012, это соответствие стандартам _improvement_ - в C++ 11 'std :: vector <>' 'подпись конструктора изменена, а код, который вы не выполняете, не работает. – ildjarn

+0

Я должен спросить: что должен был делать этот код? – pmr

+0

@pmr: Предполагалось инициализировать 'table' с 100 пустым' vector 's. – ildjarn

ответ

6

vec_type элемент vector<cv::Point2d> типа, вы не можете назначить 0 к нему, решение обходной путь может быть:

проход конструктор по умолчанию vector<Point2d>

table.assign(100, vector<Point2d>()); 

Или использовать std::vector::resize, чтобы получить те же усилия:

table.resize(100);