1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

How to convert vector with datatype double to a vector with certain class datatype?

Discussion in 'C' started by Roy420, Aug 12, 2008.

  1. Roy420

    Roy420 New Member

    Joined:
    Aug 12, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    The issue I am encountered with is… the same vector we read as double is to be used in another function, but with different data type as mentioned bellow. So I need a conversion function which performs this fact.

    I have a class as follows

    template <class T>
    class NRVec {
    private:
    int nn; // size of array. upper index is nn-1
    T *v;
    public:
    NRVec();
    explicit NRVec(int n); // Zero-based array
    NRVec(const T &a, int n); //initialize to constant value
    NRVec(const T *a, int n); // Initialize to array
    inline const T & operator[](const int i) const;
    inline int size() const;
    ~NRVec();
    };

    I have a vector defined as follows

    typedef const NRVec<DP> Vec_I_DP;
    I have a another class having a function svdfit() and this function takes a argument (vector) with datatype from the class NRVec.

    void AutoCompensation::svdfit(Vec_I_DP &x, Vec_I_DP &y)

    The problem arises when I have my own vectors with type

    typedef double DP;
    vector <DP> v,Vect_XX_AT, Vect_YY_AT;


    Now instead of using Vec_I_DP, I want to use my vector Vec_XX_AT. The problem is difference in the datatype. So I wanted to have a conversion function which converts vector from datatype Vec_I_DP(Vec_I_DP &x) to DP(vector <DP> Vect_XX_AT) as shown above.

    How to do it??

    Merci
    :D
     
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,287
    Likes Received:
    364
    Trophy Points:
    83
    You should use code block rather than Italics.
     
  3. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    What you'll need to do is to create an array of doubles using double *arr=new double[Vect_XX_AT.size()] (now put a delete[] somewhere in such a way as it will cause a compiler error - forcing yourself to deal with it before proceeding), populate it from Vect_XX_AT, then you can use the NRVec(const T *a,int n) constructor.
     

Share This Page