zoukankan      html  css  js  c++  java
  • c++ A类包含B类指针,B类包含A类指针的情况

    #include<stdio.h>
    
    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:cpptestabcabcmain.cpp(13): error C2027: 使用了未定义类型“Bclass”
    1> d:cpptestabcabcmain.cpp(5) : 参见“Bclass”的声明
    1>d:cpptestabcabcmain.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一个

  • 相关阅读:
    hdu 2295 DLX
    hdu 4714 树形DP
    hdu 4711 动态规划
    hdu 3656 DLX
    hust 1017 DLX
    hdu 3938 并查集
    hdu 3652 打表
    poj 2152 树形DP
    洛谷P1266速度限制
    洛谷P1841重要的城市
  • 原文地址:https://www.cnblogs.com/dragon2012/p/4481217.html
Copyright © 2011-2022 走看看