vendredi 24 mars 2017

A C++ templated function issue

I have a problem with a Template function inside a class. When I call "Set" in something() function, VS show me: Error C2275 'T': illegal use of this type as an expression

The header is:

#include <vector>
#include <array>
#include <iostream>

using t_double = double;
template<typename T>
using t_vec = std::vector<T>;

class SuperPixel2
{
    t_vec<double> distances;

    template<typename T>
    void Set(t_vec<T> &v,
    size_t i,
    size_t j,
    const T &val);

    void something();
}

And the cpp file:

#include "SuperPixel2.h"
template<typename T>
void SuperPixel2::Set(t_vec<T> &v,
    size_t i,
    size_t j,
    const T &val)
{
    v[i * cols + j] = T;
}

void SuperPixel2::something()
{
    t_double d;
    //..
    Set(distances, k, l, (t_double)d);
    //..
}

Aucun commentaire:

Enregistrer un commentaire