gpt4 book ai didi

c++ - 如何专门化字符串数组的模板?

转载 作者:太空狗 更新时间:2023-10-29 21:33:25 27 4
gpt4 key购买 nike

我试着做一个例子来将一个字符串数组传递给一个专门的模板构造函数,但实际上我没有得到任何错误,但这个例子不起作用。我试过这样的:调用模板类构造函数:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com