Получение доступа к объекту в приватном поле дружественного класса

192
03 декабря 2021, 04:40

Есть класс, назовём его Firstclass. В нём, в приватном поле определён структурный тип следующего вида:

using struct StructName {
                          QString nameFild;
                          QString nameFild1;
                          qint32 nameFild2;
                          ...
    };

Далее, в приватном поле этого же класса (Firstclass) объявлен объект шаблонного класса QList <StructName> nameObject; К этому классу (Firstclass) есть дружественный класс TestClass. Проблема заключается в том, что бы из описанных сущностей собрать объект и получать к нему доступ из класса TestClass. Объект должен быть вида:

StructName TestObject;
TestObject.nameFild1 = valueFild1;
TestObject.nameFild2 = valueFild2;
nameObject.append(TestObject);

TestClass и Firstclass лежат в разных файлах. В классе Firstclass менять ничего нельзя. Единственное что я могу сделать, это объявить к нему дружественный класс TestClass. Я пишу Unit тесты для функций класса Firstclass и мне нужно через методы класса TestClass передавать данные в Firstclass. Подскажите пожалуйста как это можно сделать?

Answer 1
#include <list>
#include <string>
class Firstclass
{
    friend class Testclass;
public:
    Firstclass() = default;
private:
    struct StructName
    {
        std::string nameFild1;
    };
    std::list<StructName> objectName;
};
class Testclass
{
public:
    Testclass() = default;
    void doSomethingWithFirstclass(Firstclass& firstclass)
    {
        Firstclass::StructName TestObject;
        TestObject.nameFild1 = "name";
        firstclass.objectName.push_back(TestObject);
    }
};
int main()
{
    Firstclass firstclassObject;
    Testclass testclassObject;

    testclassObject.doSomethingWithFirstclass(firstclassObject);
}
READ ALSO
Сгенерировать N псевдослучайных чисел из диапазона [a;b)

Сгенерировать N псевдослучайных чисел из диапазона [a;b)

Есть ли в питоне/numpy аналог функции std::generate из C++? У меня есть функция без параметров, которая возвращает единственное значениеНадо создать...

71
LZ77. Функция сжатия

LZ77. Функция сжатия

Пишу курсовую, но никак не могу найти часть алгоритма сжатия LZ77

94
c# формат ToString(&quot;##:##:##&quot;)

c# формат ToString("##:##:##")

Всем привет, помогите пожалуйстаVisual Studio c# жалуется, что "входная строка имела не правильный формат"

109
Как быстро скачать множество картинок в многопотоке?

Как быстро скачать множество картинок в многопотоке?

Делал сперва скачивание через ParallelFor

164