gpt4 book ai didi

c++ - 在模板中设置默认比较类型

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:42 24 4
gpt4 key购买 nike

我想在模板中将默认类类型设置为默认比较类型,然后我想使用模板比较两个字符串,我写了代码但它给出了错误。代码和错误如下,

class CaseSenCmp{
public:
static int isEqual(char x, char y){ return x==y; }
};

template<typename c=CaseSenCmp>
int compare(char* str1, char* str2){
for(int i=0; i<strlen(str1) && i<strlen(str2); i++)
if(!c::isEqual(str1[i], str2[i]))
return str1[i]-str2[i];
return strlen(str1)-strlen(str2);
}

main(){
char *x = "hello", *y = "HELLO";
compare(x,y);
}

但是当我添加了这个模板原型(prototype)后,它就起作用了

template<typename c>

编译器报错

error: default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11|

此外,当我尝试使用这段代码在 main 函数中进行类型转换时,它也有效

compare<CaseSenCmp>(x,y);

但是我想设置默认策略

最佳答案

我在 code::blocks 中也遇到过这个问题。要解决此问题,您必须启用

-std=c++11

进入你的编译器。如果是 code::blocks,您必须遵循以下说明。

Settings->Compiler->Compiler Flags...寻找并勾选“Have g++ follow the C++11 ISO C++ language standard”选项。如果没有得到它,那么还要检查它上面的框是否符合 C++0x 标准。

关于c++ - 在模板中设置默认比较类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29318665/

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