您的位置:首页 > 编程语言 > C语言/C++

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

2015-05-06 10:47 176 查看
#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一个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: