作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试着做一个例子来将一个字符串数组传递给一个专门的模板构造函数,但实际上我没有得到任何错误,但这个例子不起作用。我试过这样的:调用模板类构造函数:
int ia[] = { 6, 7, 8, 3 };
const sav<int> si( ia, sizeof( ia ) / sizeof( ia[ 0 ] ) );
std::string sa[] = { "World" , "Hello" };
const sav<std::string> ss( sa, sizeof( sa ) / sizeof( sa[ 0 ] ) );
在我的模板中我有:
template<typename T>
class sav{
public:
sav(T* givenArray,size_t size) {
std::cout<<"not specialized" << std::endl;
}
};
/* ** */
template<>
class sav<std::string[]>{
public:
sav(std::string* givenArray[],size_t size) {
std::cout<<"specialized" << std::endl;
}
};
我想在 ss
情况下使用第二个,但这仍然适用于第一个。
最佳答案
那是因为你使用了sav<std::string>
, 当特化为 sav<std::string[]>
.
专业应该是sav<std::string>
.
和你的专业sav
构造函数也是错误的,因为第一个参数是指向 std::string
的指针的“数组” .
关于c++ - 如何专门化字符串数组的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097934/
我有一个带有模板函数的基类,该函数具有通用模板类型和专用版本。 #ifndef BASE_CLASS #define BASE_CLASS #include using namespace std;
我有这个 3D vector 模板 template class Vec3TYPE{ public: union{ struct{ TYPE x,y,z; }; struct{ TY
我是一名优秀的程序员,十分优秀!