我有一个Node.h文件,它引入了Node类,并且我在Node.cpp文件中实现了它的方法和成员变量。现在我需要在另一个类的定义中使用这个类,但是我还需要一些额外的变量来实现。我无法更改头文件。那我该怎么做呢?将新变量添加到C++中类的定义
回答
这就是继承是,只要创建节点之后继承一个新的类,就像这样:
#include "Node.h"
class NewNode: public Node {
// New stuff goes here
}
//编辑
正如在评论中提到,确保析构函数是虚拟的。
强制性的“因为你是新的继承确保析构是虚拟的”评论。 –
好点本杰明:) – Kelm
有两种方法可以做到:继承和组合。如果你的新类是一个具有一些额外功能的Node,那么你应该像其他人所建议的那样使用继承。如果您的新类需要使用Node来完成,但实际上不是Node,请为该类提供Node类的数据成员。
通过使用组合,新类不会获得节点接口,这意味着节点成员函数不会自动工作。它没有得到任何protected
功能(Node类可能不应该有)。它可以对将来可能发生的Node更改进行一些隔离(可能会发生这种情况)(如果使用继承,添加新的Node功能会将它们添加到新类中)。它减少了新类和节点之间的耦合,这通常很好。
当你可以的时候使用组合,只有当它使事情变得更容易的时候继承。
可用的组合物,新的.h文件中会有:
#include "Node.h"
Node m_node;
或
class Node;
std::unique_ptr<Node> m_node; // or other desired pointer type
需要明确的分配(在std::unique_ptr
有当类成员被删除,删除m_node)和额外的间接层(m_node->Foo()
而不是m_node.Foo()
)。使用前向声明而不是在.h文件中包含.h文件对于大型项目来说很好,因为它会加快编译速度。
然后,只需调用节点public
功能在您的新课程的运作。
- 1. 将类变量添加到定义的类
- 2. C#重新定义类中的变量
- 3. 将自定义变量添加到get_posts
- 4. 将自定义类型添加到变量类型int?
- 5. 如何将type添加到for typecript中定义的变量中?
- 6. 将变量添加到CGAL的Point类
- 7. 如何在Objective-C中将变量添加到类别中?
- 8. 将新变量添加到数据框中的特定位置
- 9. jquery:将变量添加到变量中
- 10. C# - 将变量添加到字符串中的特定点
- 11. C++将方法添加到头文件中定义的类
- 12. 从会话变量定义变量并将其添加到变量
- 13. 将“属性”或类添加到变量
- 14. 将类添加到变量内部echo
- 15. C#类变量的定义类型
- 16. groovy:添加和删除类中定义的变量的元素
- 17. Actionscript将自定义类添加到.fla
- 18. 将自定义的.dll类库添加到asp.net/C#网站
- 19. 新手:关于一个类中的ios/objective -c变量定义
- 20. Jmeter将变量添加到CSV变量
- 21. C++重新定义变量不变
- 22. 将变量添加到.append
- 23. 将变量添加到Jqplot
- 24. 将变量添加到document.title
- 25. 将变量添加到$ _SESSION
- 26. 将变量添加到MYSQL
- 27. 将变量添加到Tuple
- 28. 将JPG添加到变量
- 29. 如何将自定义变量添加到jQuery可排序?
- 30. 将一些自定义会话变量添加到JavaScript对象
子类,从节点 –
派生类OOP是你的朋友:从该类继承并扩展它。 – jrd1
如果您不能将方法添加到头文件 - 其他文件如何知道这些功能? –