类的作用域和定义顺序

C++: Class scope and definition order

本文关键字:定义 顺序 作用域      更新时间:2023-10-16

我很难找到解决这个问题的方法。本质上,我有一个节点,它有连接到其他节点的输入和输出端口。端口具有不同的属性,我希望将它们组合在一个类中。现在的代码是

class Node
{
 private:
    std::vector<Port*> m_Input; 
    std::vector<Port*> m_Output; 
...
};
class Port
{
 private:
    Node* m_Connection;
    std::string m_PortName;
 ...
}

错误是当试图编译Port.cpp时,Node的包含文件说没有声明Port。是否有一种方法可以全局声明类,以便Port可以看到它。比如在顶部有一个函数定义。由于

试试这样:

class Port;
class Node
{
 private:
    std::vector<Port*> m_Input; 
    std::vector<Port*> m_Output; 
...
};
class Port
{
 private:
    Node* m_Connection;
    std::string m_PortName;
 ...
}