运行 这个方法的 C++ 主方法驱动程序有什么问题?
What is wrong with this C++ main method driver to run this method?
我这学期正在做 C++(刚学完 Java),并使用 Codewars 进行一些练习(这是我最有效的练习方式,但它只需要方法而不需要驱动程序)我的 C++ 编码,但不确定如何为此方法创建驱动程序,因此我可以在我的 IDE.
中练习
我在这里遗漏了什么所以它在我的 IDE 中运行?解决方案(不是我的代码)有效,但我的主要方法没有驱动它。
#include <iostream>
#include <cctype>
#include <unordered_set>
int main(int argc, char *argv[]) {
using namespace std;
cout << is_isogram("Dermatoglyphics"); //error: use of undeclared identifier 'is_isogram'
}
bool is_isogram(std::string str) { //warning: Function is never used
std::unordered_set<char> char_set;
for (const auto &c : str) {
auto c_lower = std::tolower(c);
if (char_set.count(c_lower) == 0) char_set.insert(c_lower);
else return false;
}
return true;
}
在你尝试 use is_isogram()
in main()
的时候,它实际上还没有被声明,因此“使用未声明的标识符" (a).
您可以通过两种方式之一解决这个问题,第一种是在使用前用函数原型声明它,例如:
bool is_isogram(std::string); # declare
int main(int argc, char *argv[]) { # define
// main stuff
}
bool is_isogram(std::string str) { # define
// is_isogram stuff
}
第二个是交换 is_isogram()
和 main()
以便声明作为定义的一部分完成(定义某些内容隐式声明它):
bool is_isogram(std::string str) { # define
// is_isogram stuff
}
int main(int argc, char *argv[]) { # define
// main stuff
}
(a) 报告的第二个问题“未使用函数”几乎可以肯定只是第一个问题的 side-effect。因为编译器无法对来自 main()
的 is_isogram()
调用做任何事情,它只是在报告错误后将其丢弃。因此,现在没有代码在您定义函数时调用它。
我这学期正在做 C++(刚学完 Java),并使用 Codewars 进行一些练习(这是我最有效的练习方式,但它只需要方法而不需要驱动程序)我的 C++ 编码,但不确定如何为此方法创建驱动程序,因此我可以在我的 IDE.
中练习我在这里遗漏了什么所以它在我的 IDE 中运行?解决方案(不是我的代码)有效,但我的主要方法没有驱动它。
#include <iostream>
#include <cctype>
#include <unordered_set>
int main(int argc, char *argv[]) {
using namespace std;
cout << is_isogram("Dermatoglyphics"); //error: use of undeclared identifier 'is_isogram'
}
bool is_isogram(std::string str) { //warning: Function is never used
std::unordered_set<char> char_set;
for (const auto &c : str) {
auto c_lower = std::tolower(c);
if (char_set.count(c_lower) == 0) char_set.insert(c_lower);
else return false;
}
return true;
}
在你尝试 use is_isogram()
in main()
的时候,它实际上还没有被声明,因此“使用未声明的标识符" (a).
您可以通过两种方式之一解决这个问题,第一种是在使用前用函数原型声明它,例如:
bool is_isogram(std::string); # declare
int main(int argc, char *argv[]) { # define
// main stuff
}
bool is_isogram(std::string str) { # define
// is_isogram stuff
}
第二个是交换 is_isogram()
和 main()
以便声明作为定义的一部分完成(定义某些内容隐式声明它):
bool is_isogram(std::string str) { # define
// is_isogram stuff
}
int main(int argc, char *argv[]) { # define
// main stuff
}
(a) 报告的第二个问题“未使用函数”几乎可以肯定只是第一个问题的 side-effect。因为编译器无法对来自 main()
的 is_isogram()
调用做任何事情,它只是在报告错误后将其丢弃。因此,现在没有代码在您定义函数时调用它。