如何修复和编译这个C ++程序

时间:2014-03-08 09:20:41

标签: c++

在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 

我不知道如何解决这个问题。我们将非常感激地收到任何理解。

3 个答案:

答案 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)

  1. 添加using namespace std;或使用std::cout代替cout
  2. 使用A::B而不是A.B。点运算符用于对象或结构/联合。