博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ A类包含B类指针,B类包含A类指针的情况
阅读量:7042 次
发布时间:2019-06-28

本文共 975 字,大约阅读时间需要 3 分钟。

#include
class Bclass;class Aclass{public: friend Bclass; void func() { pB->funcB(); } int data; Bclass* pB;};class Bclass{public: friend Aclass; void funcB() { p->func(); } Aclass* p; int data;};int main(){ return 0;}

编译结果:

1>------ 已启动生成: 项目: Abc, 配置: Debug Win32 ------

1> main.cpp
1>d:\cpptest\abc\abc\main.cpp(13): error C2027: 使用了未定义类型“Bclass”
1> d:\cpptest\abc\abc\main.cpp(5) : 参见“Bclass”的声明
1>d:\cpptest\abc\abc\main.cpp(13): error C2227: “->funcB”的左边必须指向类/结构/联合/泛型类型

 

A类里面包含B类的指针,并且方法里面调用B类的方法,B类里面包含A类的指针,同样也调用A的方法,搞了半天没搞定

找来大神,说:你虽然申明了B类,但是,编译器只是知道有这个东西,并没有实现方法,要把分开,头文件一个,cpp一个

class Bclass;class Aclass{public:    friend Bclass;    void func();    int data;    Bclass* pB;};class Bclass{public:    friend Aclass;    void funcA()    {        p->func();    }    Aclass* p;    int data;};

把实现放到cpp中

#include"Aclass.h"void Aclass::func(){    pB->funcA();}

完美解决。

启发c++写东西,还是要分开把类分在两个里面的,头文件一个,cpp一个

转载地址:http://gtqal.baihongyu.com/

你可能感兴趣的文章
用户表的演变过程
查看>>
前端须知的 Cookie 知识小结
查看>>
nodemon使用简介
查看>>
用 TypeScript 开发 Node.js 程序
查看>>
Html
查看>>
关于css层叠上下文,层叠顺序的一个案例分析
查看>>
java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统
查看>>
MySQL8.0.11的安装和Navicat连接mysql
查看>>
下载图片 复盘
查看>>
js跨站脚本
查看>>
如何从程序员到架构师?
查看>>
企业级 SpringBoot 教程 (十四)在springboot中用redis实现消息队列
查看>>
Spring Cloud构建微服务架构—服务网关过滤器
查看>>
Git命令
查看>>
插入一条不重复的记录
查看>>
挖矿程序minerd,wnTKYg***分析和解决
查看>>
我的友情链接
查看>>
IT十年工作总结之9个权限相关对象
查看>>
跟我学《JavaScript高程3》第一讲,课程笔记
查看>>
我的友情链接
查看>>