首页 > 编程语言 >c++类循环依赖的问题

c++类循环依赖的问题

时间:2024-11-14 09:30:52浏览次数:1  
标签:依赖 头文件 c++ 循环 cpp include class

目前的一种状况是A类中以B类指针作为成员变量,B类在构造时需传入A类指针作为参数。

a.h
class A{
	B *b;
};
b.h
class B{
	B(A *a);
};

这种情况需要在头文件中前向声明,然后在.cpp文件中include另一个类的头文件。如下:

a.h
class B;
class A{
	B *b;
};
b.h
class A;
class B{
	B(A *a);
};
a.cpp
#include "a.h"
#include "b.h"
// +其他内容

b.cpp
#include "b.h"
#include "a.h"
B::B(A *a){

}
// +其他内容

这样问题就解决了,循环依赖有很多种情况,我遇到的这种只是其中一种,想了解更多查看
https://blog.csdn.net/wangjie112358/article/details/135824167

标签:依赖,头文件,c++,循环,cpp,include,class
From: https://www.cnblogs.com/xddisme/p/18545357

相关文章

  • C++中的方法宏定义
    #defineCORE_INIT(fn)__define_core_initcall(fn)这一行代码是一个宏定义,用于将fn传递给__define_core_initcall宏或函数。具体解释如下:#define:定义一个宏,用于将宏名替换为对应的代码片段。CORE_INIT(fn):这是宏的名称和参数。CORE_INIT是宏名,fn是参数,表示函数或代......
  • C++基础语法实现写时复制CowString
    前言: CowString写时复制设计思路难点:通过下标访问字符串元素的基本思路重载[]运算符,在函数中直接返回该位置指针的解引用,但此时返回值为char类型,对于进行单个字符串修改的操作,如:str[1]='H';,无法处理赋值时的写时复制操作,只能通过输出流运算符输出char。解决方法:可以在Cow......
  • C++单例模式实现
    单例模式(SingletonPattern)是软件设计模式中的一种,用于确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。一、初始版本(手动创建释放)一个类只有一个实例的实现方法:隐藏构造函数,是外界无法创造对象通过类静态成员函数getInstance返回静态局部对象指针(指向堆空间的......
  • C++ 左值引用和右值引用之间的转换
    intretVal(int&&v){cout<<"右值引用:";returnv;}intretVal(int&v){cout<<"左值引用:";returnv;}intretVal(constint&v){cout<<"const左值引用:";returnv;}i......
  • @Lazy注解解决循环依赖
    @Lazy是Spring框架中的一个注解,用于延迟一个bean的初始化,直到它第一次被使用。在默认情况下,Spring容器会在启动时创建并初始化所有的单例bean。这意味着,即使某个bean直到很晚才被使用,或者可能根本不被使用,它也会在应用启动时被创建。@Lazy注解就是用来改变这种行为的。也就是......
  • 【c++】广度优先搜索详解
    BFS(图论)BFS全称是 BreadthFirstSearch,中文名是宽度优先搜索,也叫广度优先搜索。是图上最基础、最重要的搜索算法之一。所谓宽度优先。就是每次都尝试访问同一层的节点。如果同一层都访问完了,再访问下一层。这样做的结果是,BFS算法找到的路径是从起点开始的 最短 合法......
  • Python语法:循环语句,掌握程序运行的节奏
    引言在当今数字化飞速发展的时代,编程已经成为一项不可或缺的技能,而Python作为一门简洁、高效且应用广泛的编程语言,备受开发者青睐。循环语句是Python编程中的基础结构之一,它在数据处理、算法实现、自动化任务等众多场景中都发挥着至关重要的作用。无论是专业的软件开发人员......
  • 【c++】游戏作品分享
    1.法术对战#include<iostream>usingnamespacestd;intmain(){ intyhp=444; intchp=2000; intaaa; intlan=2000; intdu=0; inttuy=0; for(inti=1;i<=9999;i++) { cout<<"你的血量:"<<yhp<<endl<<"电脑血量:&quo......
  • 【c++】游戏作品分享
     c++代码#include<bits/stdc++.h>#include<xiaohoucode.h>#include<time.h>#include<stdlib.h>#include<unistd.h>#include<termio.h>#include<ctype.h>#include<stdio.h>#include<math.h>usingnamespa......
  • Visual C++ 6.0中文版安装包下载教程及win11安装教程
    本文分享的是VisualC++6.0(简称VC++6.0)中文版安装包下载及安装教程,关于win11系统下安装和使用VC++6.0使用问题解答,大家在安装使用的过程中会遇到不同的问题,如遇到解决不了的问题请给我留言!一、安装包的下载vc6.0安装包下载连接:https://pan.quark.cn/s/979dd8ba4f35二、......