Мне нужна переменная, которая объявляется в структуре, которая будет инициализирована со значением позже. Это в основном потому, что его инициализация зависит от другого члена структуры, который имеет значение только после того, как некоторые функции были выполнены.Объявление элементов структуры, которые инициализируются позже (C++)
Это звучит немного странно, так что я буду показывать мой код:
struct frame
{
Mat thresholded;
vector<vector<Point> > contrs;
vector<Moments> momts;
};
frame obj_detect(frame img)
{
// Get contours from image
findContours(img.thresholded, img.contrs, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
// Initialise moments vector big enough for all contours' moments
img.moments(img.contrs.size());
...
return img;
}
int main()
{
frame frame1;
frame1 = obj_detect(frame1);
...
}
В настоящее время этот код выдает эту ошибку: error: no match for call to ‘(std::vector<cv::Moments>) (std::vector<std::vector<cv::Point_<int> > >::size_type)’
Как следует Инициализируем моменты векторный массив так, что он имеет достаточно места для всех контуров?
Почему бы просто не использовать 'зЬй :: string' вместо размера и строковых полей C? –
На самом деле это не массивы символов, это какая-то странная векторная вещь openCV. Я просто помещал его в виде массивов символов, чтобы он был более общим. Если бы это было неправильно, я изменил бы это. – theoB610
Предположительно, части могут храниться как переменные. После того как вы собрали все собранные части, используйте их для создания рабочего экземпляра вашей структуры. – Peter