Информация об изменениях

Сообщение 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>
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>
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 ;
};