使用在类外部声明的数据类型

时间:2012-02-22 19:19:51

标签: c++

我是c ++的新手,所以对于你们中的一些人来说这是个愚蠢的问题。

class DList {
  public:
    struct DNode {
      int data;
      DNode* next;
      DNode* prev;
      DNode(DNode* ptr1, DNode* ptr2, int val)
      {
        next = ptr1;
        prev = ptr2;
        data = val;
      }
      ~DNode() {}
      public:
      DNode* getNext() {return next;}
      int getNodeVal() {return data;}
    };

这是me.suppose的DList结构我想在其他cpp文件中使用此类之外的数据类型DNode来声明DNode类型的数据。我可以使用它。

2 个答案:

答案 0 :(得分:5)

这只是名称资格问题:

DList::Dnode x;

这也适用于外部引用在类中静态声明的任何变量或函数。

class DList {
  public:
    struct DNode {
      int data;
      DNode* next;
      DNode* prev;
      DNode(DNode* ptr1, DNode* ptr2, int val)
      {
        next = ptr1;
        prev = ptr2;
        data = val;
      }
      ~DNode() {}
      public:
      DNode* getNext() {return next;}
      int getNodeVal() {return data;}
    };
    static int counter;
    static int f() {/**/} //do some stateless operation related to the class
};
//...
DList::counter++;
int result = DList::f();

答案 1 :(得分:3)

您可以使用以下语句声明该类型的变量:

DList::DNode myNode;

如果您在其他cpp文件中,请确保#include "DList.h"或其他(希望)头文件的名称。如果它不是头文件,您应该将其移动到一个,并可能考虑将实现细节移动到.cpp文件。