C++11 A C++;模板函数问题
类中的模板函数有问题。当我在something()函数中调用“Set”时,VS显示: 错误C2275“T”:非法使用此类型作为表达式 标题为:C++11 A C++;模板函数问题,c++11,templates,C++11,Templates,类中的模板函数有问题。当我在something()函数中调用“Set”时,VS显示: 错误C2275“T”:非法使用此类型作为表达式 标题为: #include <vector> #include <array> #include <iostream> using t_double = double; template<typename T> using t_vec = std::vector<T>; class SuperPixe
#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();
}
#包括
#包括
#包括
使用t_double=double;
模板
使用t_vec=std::vector;
类超像素2
{
t_-vec距离;
模板
无效集(t_vec&v,
尺码(i),
尺寸j,
常数T&val);
使某物无效;
}
和cpp文件:
#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);
//..
}
#包括“superpix 2.h”
模板
void superpix 2::Set(t_vec&v,
尺码(i),
尺寸j,
常数(T&val)
{
v[i*cols+j]=T;
}
void superpix 2::something()
{
双d;
//..
设置(距离,k,l,(t_-double)d);
//..
}
这条线看起来很奇怪:
v[i * cols + j] = T;
我想这应该是:
v[i * cols + j] = val;
作为旁注(也许这对于整个类来说更有意义),
距离的类型是已知的(一个双精度向量),因此我不清楚为什么集
方法需要是模板成员。这行看起来很奇怪:
v[i * cols + j] = T;
我想这应该是:
v[i * cols + j] = val;
作为旁注(也许这对于整个类来说更有意义),距离的类型是已知的(一个双精度向量),因此我不清楚为什么集
方法需要是模板成员。除了sudo make install所说的,通常不能在头文件中声明模板,而在cpp文件中写入实现。有关问题的答案,请参阅。除了sudo make install所说的,您通常不能在头文件中声明模板,而在cpp文件中写入实现。看看你的问题的答案