gpt4 book ai didi

c++ - 在 C++ 中从子窗体访问父函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:19 25 4
gpt4 key购买 nike

我在 C# 或 PHP 甚至 ActionScript 中看到了解决此问题的几个方法,但在 C++ 中却没有。我有一个父窗体,它通过更新子窗体并在其上调用 ShowWindow 来调用子窗体。我现在需要子窗体能够调用父窗体的(公共(public))函数之一。

我的第一个想法是在子构造器中将父级传递给子级,但由于子级不知道父级是什么,我在子级的构造器定义中遇到错误。父项知道子项是什么(我#included 子项窗体的头文件在父项窗体的头文件中),但我不能在不冲突的情况下将父项的头文件包含在子项的头文件中。

关于在 C++ 中使这项工作更好的方法或方法有什么想法吗?另外,我正在使用 C++ Builder 2010 fyi。

我已经找到了解决方案,很快就会发布。

最佳答案

你的问题是交叉依赖:父类和子类需要相互了解。但问题是他们不需要知道太多。一种解决方案是像这样使用前向声明:

parent.h中:

#include "child.h"

class Parent {
Child c;
Parent() : c( this ) {}
};

child.h 中:

class Parent; // this line is enough for using pointers-to-Parent and references-to-Parent, but is not enough for defining variables of type Parent, or derived types from Parent, or getting sizeof(Parent) etc

class Child {
public:
Child(Parent* p) : parent( p ) {}

private:
Parent *parent;
};

关于c++ - 在 C++ 中从子窗体访问父函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com