Я только начинаю учить С++. Не обращайте внимания, что используются объекты OpenCV ...
Вообщем ошибку дает функция foo3(). Это функция OpenCV, но это не имеет значения, так как она работает, если я не разделяю код, данная функция требует указатель на объект _h.
Вообщем у меня есть некий код, который работает таким образом:
void foo1()
{
CvMat _h = cvMat(3, 3, CV_64F); // присваивание
... работа с _h ...
foo3(& _h); // верный результат!
}
Теперь, я хочу разделить работу программы на две функции:
void foo1()
{
CvMat _h; // создание объекта
foo2(& _h); // передача указателя в функцию
foo3(& _h); // И ВОТ тут возникает ошибка (то есть получается, что входные параметры неверные)
}
void foo2(CvMat * _h)
{
* _h = cvMat(3, 3, CV_64F); // инициализация
... работа с _h ...
}
На языке C#, который я более-менее знаю, разделение на 2 функции выглядело бы так:
void foo1()
{
CvMat _h; // создаем объект
foo2(out _h); // передаем его в функцию, которая изменяет этот объект
foo3(_h); // измененный объект передаем сюда
// вообщето, как я уже говорил foo3() требует указатель, но у меня вопрос другой - КАК разделить код на 2 функции - КАК правильно передать параметр
}
void foo2(out CvMat _h)
{
_h = cvMat(3, 3, CV_64F); // инициализация
... работа с _h ...
}