Мне было предложено использовать указатели для добавления вектора, который я хотел передать из существующей функции в другую функцию.Я действительно застрял на том, как получить информацию обратно этого указателя, хотя.Я попробовал несколько вещей, которые я прочитал здесь и там, поэтому позвольте мне продемонстрировать, о чем я говорю.
основная программа:
std::vector<float> * dvertex=NULL;
track.calculate(irrelevant stuff, dvertex)
дополнительная программа (отслеживать, вычислять)
track::caclulate(irrelevant stuff, vector<float> * dvertex)
{
...
vector<float> pos;
... pos filled after some calculations
if(! (dvertex==NULL))
{
dvertex = &pos1;
}
назад к основному, если я не испортил что-то выше, вот некоторые вещи, которые я пробовал
1
(*dvertex).at(0)
float z = (*dvertex).at(0)
2
(*dvertex)[0]
и куча вещей, которые просто не компилировались.Я застрял, потому что я не уверен, как получить конкретные значения из этого вектора в основной программе.Я даже подумал, что это может быть бит if (! (Dvertex == NULL)), поэтому я изменил его на if (dvertex == NULL), но все равно не радуюсь.Любая помощь будет принята с благодарностью.
* Редактировать / обновить * Огромное спасибо всем за помощь, но я боюсь, что все еще делаю это неправильно.
Итакследуя предложениям, которые я просто передал ссылку: я сделал это:
основной
std::vector<float> dvertex;
track.calculate( foo, &dvertex);
вторичный остался прежним (с! Нулевой проверки)
основной
std::cout<<dvertex[0]<<std:endl;
(среди прочих попыток фактически использовать данные)
Большое спасибо за любые мысли о том, что я все еще делаю неправильно.Все компилируется, программа просто зависает, когда доходит до того, что используются данные из dvertex.
Редактировать: Окончательное исправление
в дополнительной программе, которая мне нужна
*dvertex = pos1;
вместо
dvertex = &pos1;