C ++从另一个类访问类成员

时间:2014-04-25 02:10:23

标签: c++ class pointers object member

我的代码中有2个对象(对象' A'对象' B')。首先,在我的主要功能中,我创建了一个' A'对象,然后在' A'对象,我创造了' B'宾语。 现在我希望能够调用一些函数并访问其他类中某个类的一些类成员。它很容易访问' B'来自' A'的成员但我不能这样做。

简而言之: - 来自' A'我想访问一些' B'班级成员。 - 来自' B'我想访问一些' A'班级成员。

我的代码(这只是一个小例子,试图解释我想做什么。):

mian.cpp

#include <iostream>
#include "a.h"

using namespace std;

int main()
{
    a *pa;

    pa=new a();

    cout << "Bye" << endl;

    delete pa;

    return 0;
}

a.cpp

#include <iostream>
#include "a.h"

a::a(void)
{
    std::cout << "Class A" << std::endl;
    b_a=new b();

    b_a->fun1(this);
}

void a::fun2(void)
{
    std::cout << "Function 2" << std::endl;
    delete b_a;
}

b.cpp

#include <iostream>
#include "b.h"

b::b(void)
{
    std::cout << "Class B" << std::endl;
}

void b::fun1(a *pa)
{
    std::cout << "Function 1" << std::endl;
    a_b=pa;
    a_b->fun2();
}

A.H

#ifndef A_H_INCLUDED
#define A_H_INCLUDED

#include "b.h"

class a
{
private:
    b *b_a;

public:
    a();
    void fun2();

};

#endif // A_H_INCLUDED

b.h

#ifndef B_H_INCLUDED
#define B_H_INCLUDED

class a; // Forward declaration

class b
{
private:
    a *a_b;

public:
    b();
    void fun1(a *pa);
};

#endif // B_H_INCLUDED

当我尝试编译时,我收到此错误:&#34;错误:无效使用不完整类型&#39; class a&#39;&#34;。然后:&#34;错误:转发&#39; a类&#39;&#34;。

我认为前向声明存在问题,但我读过我必须使用它来避免头文件中的循环引用。

任何帮助或建议都会非常感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在你的a.h中,为b类做另一个前瞻声明。它被称为循环前向声明。

http://fw-geekycoder.blogspot.com/2012/04/how-to-resolve-circular-dependencies-in.html