gpt4 book ai didi

c++ - 函数未在此范围内声明,即使存在头文件

转载 作者:行者123 更新时间:2023-11-27 22:35:59 31 4
gpt4 key购买 nike

我正在尝试运行一些测试代码来学习 C++,但我收到一条错误消息,告诉我 reverseDigits 函数未在 main.cpp 范围内声明:

错误:“reverseDigits”未在此范围内声明

但是 #include "Solutions.h" header 包含在 main.cpp 中,所以我认为它在范围内。

我检查了其他问题,但答案都与循环头文件包含的问题有关,我认为这不是这里的问题。

你知道我为什么会看到这个错误吗?

Solution.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);
}

main.cpp

#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 不需要它,所以我不明白这一点。如果这是某些自动评估框架的一部分,您将必须提供更多详细信息

关于c++ - 函数未在此范围内声明,即使存在头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084741/

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