我的问题在于以下C ++代码。在'cout'的行上我得到了错误:
“'number'未在此范围内声明”。
·H
using namespace std;
class a{
int number();
};
的.cpp
using namespace std;
#include <iostream>
#include "header.h"
int main(){
cout << "Your number is: " << number() << endl;
return 0;
}
number(){
int x = 1;
return x;
}
注意:我知道这不是最干净的代码。我只是想让函数正常运行并刷新我的内存以了解如何使用标题。
答案 0 :(得分:1)
对于最低限度的修复,三次基本更改是必要的。
正确实施number()
方法
int a::number() {
int x = 1;
return x;
}
正确调用number()
方法
a aObject;
cout << "Your number is: " << aObject.number() << endl;
但是还有许多其他增强功能。
另外,正如@CPlusPlus所指出的,number()
方法的可用范围,例如声明它public
class a{
public:
int number();
};
答案 1 :(得分:0)
在你的cpp文件中试试这个
using namespace std;
#include <iostream>
#include "header.h"
void a::number()
{
int x = 1;
return x;
}
int main()
{
cout << "Your number is: " << a().number() << endl;
return 0;
}
对于您的头文件,将class
替换为struct
。您收到此错误的原因是编译器无法找到变量number
。它实际上是一个类的方法。你用class
替换struct
的原因是因为默认情况下结构中的所有内容都是公共的。因此,名为header.h的头文件应该如下所示
using namespace std;
struct a
{
int number();
};
答案 2 :(得分:0)
您的代码存在三个问题。
函数编号()的定义。
正如您所声明的那样,它是该类&#34; a&#34;的成员函数。在.cpp中,类名应该用作函数的前缀。我的意思是,
a::number(){
int x = 1;
return x;
}
由于该函数是类&#34; a&#34;的成员,因此只有两种方法可以访问它,
如果函数不是静态函数,在你的情况下也是如此,你应该在类中实例化对象&#34; a&#34;他们使用&#34;。&#34;运营商参考。我的意思是,
a obj;
obj.number().
您的函数number()
在私有范围内声明。您可能还记得,默认情况下,范围是一个私有类,除非您指定public或protected。所以私有函数number()不能在声明的类之外使用,除非有朋友。
在我修复的代码下面,
·H
using namespace std;
class a{
public:
int number();
};
的.cpp
using namespace std;
#include <iostream>
#include "header.h"
a::number(){
int x = 1;
return x;
}
int main(){
a obj;
cout << "Your number is: " << obj.number() << endl;
return 0;
}