簡體   English   中英

C ++從另一個類訪問類成員

[英]C++ Accessing class members from another class

我的代碼中有2個對象(對象“ A”和對象“ B”)。 首先,在我的主要功能中,創建“ A”對象,然后在“ A”對象中,創建“ B”對象。 現在,我希望能夠調用某些函數並從另一個類訪問其中一個類的某些類成員。 從“ A”訪問“ B”成員很容易,但我不能相反。

簡而言之:-我想從“ A”訪問一些“ B”類成員。 -我想從“ B”訪問一些“ A”類成員。

我的代碼(這只是一個小例子,試圖解釋我想要做什么。):

棉花糖

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

using namespace std;

int main()
{
    a *pa;

    pa=new a();

    cout << "Bye" << endl;

    delete pa;

    return 0;
}

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;
}

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();
}

#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

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

當我嘗試編譯時,出現以下錯誤:“錯誤:不完整類型'class a'的無效使用”。 然后:“錯誤:'a類'的前向聲明”。

我猜前向聲明有問題,但我讀到必須使用它以避免頭文件中的循環引用。

任何幫助或建議,將不勝感激。 提前致謝。

在你的ah中,為b類做另一個前向聲明。 這稱為循環前向聲明。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM