C++;涉及函数和范围的标题问题 我的问题是在下面的C++代码中。在带有“cout”的行中,我得到了错误:
“'number'未在此范围内声明” h .cppC++;涉及函数和范围的标题问题 我的问题是在下面的C++代码中。在带有“cout”的行中,我得到了错误:,c++,compiler-errors,scope,header-files,C++,Compiler Errors,Scope,Header Files,“'number'未在此范围内声明” h .cpp 使用名称空间std; #包括 #包括“header.h” int main(){ 无法在您的cpp文件中尝试此操作 using namespace std; #include <iostream> #include "header.h" void a::number() { int x = 1; return x; } int main() { cout << "Your number is: "
使用名称空间std;
#包括
#包括“header.h”
int main(){
无法在您的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;
}
对于最小修复,需要进行三次基本更改
正确实现number()
方法
int a::number() {
int x = 1;
return x;
}
a aObject;
cout << "Your number is: " << aObject.number() << endl;
正确调用number()
方法
int a::number() {
int x = 1;
return x;
}
a aObject;
cout << "Your number is: " << aObject.number() << endl;
您的代码有三个问题
函数number()的定义
正如您所声明的,它是类“a”的成员函数。在.cpp中,类名应该用作函数的前缀。我的意思是
a::number(){
int x = 1;
return x;
}
由于函数是类“a”的成员,因此只有两种访问方法
如果该函数是类中的静态函数,则可以使用::operator.Like::number()访问它
如果函数不是静态函数,在你的例子中是这样的,你应该实例化类“a”之外的对象,他们使用“.”操作符和引用。我的意思是
a obj;
obj.number().
您的函数number()
是在私有作用域中声明的。您可能记得,默认情况下,除非您指定了public或protected,否则该作用域是一个私有的类。因此,私有函数number()不能在声明的类之外使用,除非它有朋友
在我修复的代码下面
h
.cpp
使用名称空间std;
#包括
#包括“header.h”
a::number(){
int x=1;
返回x;
}
int main(){
obj;
您知道默认的number
访问是如何私有的吗?在number
声明为公共之前,上述调用将失败。
a::number(){
int x = 1;
return x;
}
a obj;
obj.number().
using namespace std;
class a{
public:
int number();
};
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;
}