码迷,mamicode.com
首页 > 编程语言 > 详细

c++ A类包含B类指针,B类包含A类指针的情况

时间:2015-05-06 12:24:50      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

#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:\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一个

c++ A类包含B类指针,B类包含A类指针的情况

标签:

原文地址:http://www.cnblogs.com/dragon2012/p/4481217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!