这是我的两个类,Node和DobleNode,它们都在不同的.h文件中,并且它们都有自己的.cpp文件。

//"Node.h"

class Node
{
public:

    Node(string pName, string pID);
    void setReferencia(DobleNode *pReferencia);
    DobleNode* getReferencia(void);

private:

    string Name;
    string ID;
    DobleNode *referencia;
};

//"DobleNode.h"

class DobleNode
{
public:

    DobleNode(string pBank_code, string pCard_type);
    void setReferencia(Node *pReferencia);
    Node* getReferencia(void);

private:

    string bank_code;
    string card_type;
    Node *referencia;
};

问题是我需要引用。在Node类中,必须有一个DobleNode类型的属性,而在DobleNode类中,必须有一个Node类型的属性。看起来真的很简单,我只需要在“Node.h”之前包含“DobleNode.h”,一切都会正常工作...

但是,如果这样做,以后,当我尝试编译我的小程序时,它说标识符Node不存在。如果我用另一种方式做,它说的是同一件事,但是这次标识符DobleNode是一个不存在的标识符。

我如何解决这个问题,我认为一个解决方案可能是将两个类都放在同一个文件中,但是我确实认为有一种更好的解决方法。
有没有办法“告诉”编译器同时检查“Node.h”和“DobleNode.h”,还是有其他方法?

感谢您的回答。

顺便说一句,我正在研究Visual Studio 2010 Proffesional,C++。

最佳答案

您可以向前声明一个类,因为您正在使用指针。

//"DobleNode.h"

class Node;   // DECLARED!  "Node.h" doesn't need to be included.

class DobleNode
{
    ...


//"Node.h"

class DobleNode;   // DECLARED!  "DobleNode.h" doesn't need to be included.

class Node
{
    ...

关于c++ - .h文件的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15693663/

10-11 21:20