在nestClassDef.h中,我编写了这样的代码
class A{
public:
class B{
public:
void BTest();
};
};
class B{
};
然后在nestClassDef.cpp中我正在编写这样的代码
#include "nestClassDef.h"
#include<iostream>
void A::B::BTest(){
cout<<"Hello World!";
}
int main(){
A a;
A.B b;
b.BTest();
}
但是当我编译上面的代码时
g++ -o nestClassDef nestClassDef.cpp
我收到这样的错误: -
nestClassDef.cpp: In member function ‘void A::B::BTest()’:
nestClassDef.cpp:5: error: ‘cout’ was not declared in this scope
nestClassDef.cpp: In function ‘int main()’:
nestClassDef.cpp:10: error: expected unqualified-id before ‘.’ token
nestClassDef.cpp:11: error: ‘b’ was not declared in this scope
我不知道如何解决这个问题。我们将非常感激地收到任何理解。
答案 0 :(得分:2)
nestClassDef.cpp: In member function ‘void A::B::BTest()’:
nestClassDef.cpp:5: error: ‘cout’ was not declared in this scope
使用std::cout
代替cout
,或添加using namespace std;
(可能在#include
语句之后)。
nestClassDef.cpp: In function ‘int main()’:
nestClassDef.cpp:10: error: expected unqualified-id before ‘.’ token
nestClassDef.cpp:11: error: ‘b’ was not declared in this scope
使用A::B
代替A.B
。
答案 1 :(得分:2)
对于cout错误:它位于std
命名空间中,因此请使用std::cout
。
对于第二个错误:B
不是A's
成员,它是嵌套类型,因此您必须使用A::B b;
答案 2 :(得分:1)
using namespace std;
或使用std::cout
代替cout
A::B
而不是A.B
。点运算符用于对象或结构/联合。