gpt4 book ai didi

c++ - 在头文件中添加函数时编译错误c++

转载 作者:行者123 更新时间:2023-11-27 22:48:13 24 4
gpt4 key购买 nike

这个问题很简单,但无法解决错误,所以在这里提问。

我通过在 .h 中编写一个函数并稍后将其包含在主文件中来破坏一个简单的程序。这会导致编译错误。

我创建了两个文件作为

int remAnagram(string str1, string str2){
int occ1[SIZEOFALPHA];
int occ2[SIZEOFALPHA];
int len1, len2, tot=0;

len1 = str1.size();
len2 = str2.size();
for(int i =0; i<SIZEOFALPHA; i++){
occ1[i] = 0;
occ2[i] = 0;
}
for(int i =0; i < len1; i++){
occ1[str1[i] - 'a'] += 1;
}
for(int i = 0; i < len2; i++){
occ2[str2[i] - 'a'] += 1;
}
for(int i =0; i < SIZEOFALPHA; i++){
tot += abs(occ1[i]- occ2[i]);
}

return tot;
}

#endif // REMANAGRAM_H_INCLUDED

和主要文件的功能一样

#include "remAnagram.h"
#include<string>
using namespace std;

int main(){
string str1, str2;

cin >> str1 >> str2;
cout << remAnagram(str1, str2);

return 0;
}

出现以下错误:

remAnagram.h|8|错误:“字符串”未在此范围内声明

最佳答案

尝试引用 std::string 而不是 string 并摆脱 using namespace std 的习惯。

这解决了您的头文件中的问题。

您希望签名看起来像:

int remAnagram(const string& str1, const string& str2)

如果您正在处理动态列表,也请避免使用固定长度的 C 风格数组。此处 26 的任意长度现在似乎已经足够,但如果您将来需要考虑其他字符,如 ß 或 🙂,则必须对此进行扩展。 std::map 在这里可能是更好的调用。

关于c++ - 在头文件中添加函数时编译错误c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816433/

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