gpt4 book ai didi

c++ - 头文件的问题

转载 作者:行者123 更新时间:2023-11-30 04:39:38 25 4
gpt4 key购买 nike

我在项目中有 3 个头文件:Form1.h - 这是带有实现的头文件,TaskModel.h 和 TaskModel.cpp,TaskController.h 和 TaskController.cpp。

有文件内容:

//-----
TaskController.h

#pragma once
#include "TaskModel.h"
..........



//----
Form1.h
#pragma once
#include "TaskModel.h"
#include "TaskController.h"
.........

问题:

如何将 Form1.h 包含到 TaskModel.h 中。当我直接包含Form1.h 到TaskModel.h 时,会出现很多错误。如果使用前向声明,如何组织?

最佳答案

您可以转发声明 而不是头文件。

循环依赖问题通常是糟糕设计的标志。您希望 TaskModel.h 包含 Form1.h 吗?这是为什么?可以避免吗?不能将 Form1.h 包含到 TaskModel.cpp 中吗?

对于前向声明做:

// in TaskModel.h

class Form1; // or other classes that are using in TaskModel.h

//... task model code

// in TaskModel.cpp

#include "Form1.h"

基本上,您在这里所做的是声明此类存在。然后在 cpp 文件中包含它们。

但是请注意,这有一些限制:

  • 只能将前向声明的类用于简单任务
  • 不能按值将它们传递给方法,不能使它们成为类的成员

根据经验,如果需要转发的类大小来编译给定的代码段,则不能使用转发

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

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