c++ - 即使存在头文件,也未在此范围内声明函数
问题描述
我正在尝试运行一些测试代码来学习 c++,但我收到一个错误消息,告诉我该reverseDigits
函数未在main.cpp
范围内声明:
error: 'reverseDigits' was not declared in this scope
.
但是#include "Solutions.h"
标题包含在 中main.cpp
,所以我认为它会在范围内。
我有结帐其他问题,但答案都与包含循环头文件的问题有关,我认为这不是问题所在。
你知道我为什么会看到这个错误吗?
解决方案.h
#ifndef SOLUTION_H
#define SOLUTION_H
class Solution {
public:
Solution();
~Solution();
int reverseDigits(int x);
};
#endif // SOLUTION_H
解决方案.cpp
#include "Solution.h"
#include <string>
Solution::Solution()
{
}
Solution::~Solution()
{
}
int Solution::reverseDigits(int x) {
std::string num_string = std::to_string(x);
std::string reversed_num_string {};
for (int i = num_string.length() - 1; i > 0; i--) {
reversed_num_string.push_back(num_string[i]);
}
return stoi(reversed_num_string);
}
主文件
#include <iostream>
#include "Solution.h"
int main()
{
int x {123};
int result = reverseDigits(x);
std::cout << result << std::endl;
return 0;
}
解决方案
您声明reverseDigits
为Solution
类的成员函数,然后将其定义为Solution
(编辑:您已将其更改为匹配声明和定义,但在使用时,您正在尝试使用不合格的函数,而不是Solution
对象的成员)。文件中的声明.h
是可见的,但 中的定义.cpp
是不相关的,对main.cpp
.
在类之外声明函数(因为它显然与类无关),它应该可以工作,更改为:
class Solution {
public:
Solution();
~Solution();
};
int reverseDigits(int x); // NOT inside the class definition
我会注意:我根本不知道你为什么要Solution
上课。定义reverseDigits
不需要它,所以我没有看到重点。如果这是某些自动评估框架的一部分,您将不得不提供更多详细信息
推荐阅读
- vba - 计算特定长度的单词数量
- sql-server - Camunda 服务任务 - 运行时的同步/异步决策
- r - pretty_breaks 函数引发错误
- javascript - 来自外部 JSON 的 .ts 文件中的字符串
- random-forest - 如何在 h2o 中获得随机森林的树结果?
- regex - 正则表达式不接受日期格式的空格
- angular-material - 如何从指令中注入材料组件?
- javascript - 如何限制 Sencha touch Textfield 只接受数字和空格字符?
- php - Laravel 4.2:在functionTest case /start/global.php 在服务提供者之后加载
- mysql - MVC 在绑定到数据库的 Razor DropdownlistFor 中设置默认值