Сообщение Re[4]: ссылка на локальный вектор от 16.05.2016 12:40
Изменено 16.05.2016 12:41 sci_reseacher
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, sci_reseacher, Вы писали:
_>>А как можно вернуть ссылку на std::vector<float> в данной ситуации, когда имеется float *?
U>зачем вам ссылка нужна? какая задача? возвращайте по значению
U>вот так:
U>
нужно сделать наследников D и C класса B, таких, что в одном данные хранятся в std::vector<T>, а в другом классе T* указывает на эти данные.
наверное лучший вариант переделать базовый класс
[ccode]
struct B {
virtual vector<float> getX() = 0 ;
};
[/code]
U>Здравствуйте, sci_reseacher, Вы писали:
_>>А как можно вернуть ссылку на std::vector<float> в данной ситуации, когда имеется float *?
U>зачем вам ссылка нужна? какая задача? возвращайте по значению
U>вот так:
U>
U>vector<float> getVector(){
U> vector<float> tmp(X_,X_+size);
U> return tmp;
U>}
U>vector<float> a1 = getVector(); // <-- valid
U>const vector<float>& a2 = getVector(); // <-- valid as well
U>нужно сделать наследников D и C класса B, таких, что в одном данные хранятся в std::vector<T>, а в другом классе T* указывает на эти данные.
struct B {
virtual const vector<float> & getX() = 0 ;
};
struct C: public B {
float *X;
int size;
// vector<float> getX(){
// vector<float> tmp(X,X+size);
// return tmp;
// }
};
struct D: public B {
vector<float> X;
const vector<float> & getX(){
return X;
}
};наверное лучший вариант переделать базовый класс
[ccode]
struct B {
virtual vector<float> getX() = 0 ;
};
[/code]
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, sci_reseacher, Вы писали:
_>>А как можно вернуть ссылку на std::vector<float> в данной ситуации, когда имеется float *?
U>зачем вам ссылка нужна? какая задача? возвращайте по значению
U>вот так:
U>
нужно сделать наследников D и C класса B, таких, что в одном данные хранятся в std::vector<T>, а в другом классе T* указывает на эти данные.
наверное лучший вариант переделать базовый класс
U>Здравствуйте, sci_reseacher, Вы писали:
_>>А как можно вернуть ссылку на std::vector<float> в данной ситуации, когда имеется float *?
U>зачем вам ссылка нужна? какая задача? возвращайте по значению
U>вот так:
U>
U>vector<float> getVector(){
U> vector<float> tmp(X_,X_+size);
U> return tmp;
U>}
U>vector<float> a1 = getVector(); // <-- valid
U>const vector<float>& a2 = getVector(); // <-- valid as well
U>нужно сделать наследников D и C класса B, таких, что в одном данные хранятся в std::vector<T>, а в другом классе T* указывает на эти данные.
struct B {
virtual const vector<float> & getX() = 0 ;
};
struct C: public B {
float *X;
int size;
// vector<float> getX(){
// vector<float> tmp(X,X+size);
// return tmp;
// }
};
struct D: public B {
vector<float> X;
const vector<float> & getX(){
return X;
}
};наверное лучший вариант переделать базовый класс
struct B {
virtual vector<float> getX() = 0 ;
};