jeudi 18 juillet 2019

Using template class and aliases in c++

I have a c++ header defining vectors as:

template <class T>
class c_vec {
    public:
        std::array<T, 3> V;

        c_vec(T x = 0, T y = 0, T z = 0) { V = {x, y, z}; };

        void addition(T W) { for (int ii = 0; ii < 3; ++ii) { V.at(ii) += W.at(ii); }; };
};

using c_coor = c_vec<double>;
using c_indexdbl = c_vec<double>;
using c_index = c_vec<int>;

However, when I try to use addition:

c_coor coor_a = {};
c_coor coor_b = {1, 2, -1}
coor_a.addition(coor_b);

I get an error:

error: no matching function for call to 'c_vec<double>::addition(c_coor)'

Why? How should I define the class c_vec and its aliases?

Aucun commentaire:

Enregistrer un commentaire