Member 12678806 Ответов: 2

Обмен данными между классами MFC


Есть два класса, которые не связаны, скажем, Class1 и Class2.
У меня есть некоторая информация в переменной класса 2, доступ к которой должен быть получен в классе 1.

Когда я создаю объект класса 2 для доступа к переменной в моем классе 1, данные в переменной теряются.

Как мы можем этого достичь ?

Что я уже пробовал:

Я попытался создать объект class2 в моем class1, чтобы получить доступ к переменной

2 Ответов

Рейтинг:
2

KarstenK

При создании экземпляра объекта все данные являются новыми и пустыми. Вы должны назначить после создания.

Class2 *obj2 = new Class2();
obj2->data = obj1->data;//assign some public data 


Попробуйте это сделать с помощью отладчика. Существует область, где вы можете увидеть содержимое переменных и членов.


Рейтинг:
11

Jochen Arndt

Обычный метод заключается в передаче указателя или ссылки.

Пример:

// Class1 header file

// Forward reference to Class2.
// Avoids including the header file of Class2.
class Class2;

class Class1 
{
    // ...
    void setFromClass2(const Class2& class2);
};

// Class1 source file
#include "class1.h"
#include "class2.h"

void Class1::setFromClass2(const Class2& class2)
{
    // Access members of class2 here
}

Вы также можете создать переменную-член в Class1 это может быть инициализировано с помощью экземпляра Class2 Но тогда вы должны убедиться, что Class2 объект существует в течение всего времени жизни Class1 или сбрасывается и код проверяет его:
// Class1 header file

class Class2;

class Class1 
{
    // Initialise m_class2 to NULL in the constructor
    Class1() { m_class2 = NULL; }
    // ...
    void setClass2(const Class2 *class2) { m_class2 = class2; }
    void someFunc();
protected:
    const Class2 *m_class2;
};

// Class1 source file

void Class1::someFunc()
{
    if (m_class2)
    {
        // Access members of Class2 here when the pointer is not NULL
    }
}


То const ключевое слово в моих примерах гарантирует, что содержание Class2 не может быть изменен (только для чтения).