Получать доступ к элементам структуры, используя только имя структуры - PullRequest
0 голосов
/ 15 февраля 2020

Я не знаю, какой тип вопроса я задаю. Но мне нужно только предложение или идея, чтобы найти путь.

У меня много структур с большим количеством членов, как показано ниже

typedef struct _Bank0
{
unsigned char main_control_char;
unsigned short input_port_short;
:
:
}Pack Bank0;

typedef struct _Bank1
{
unsigned char ddr3_control_char;
unsigned char ddl_control_char;
:
:
}Pack Bank1;

Я хочу написать тестовую функцию для этого банка регистров, если я даю номер банка (то есть имя структуры), он должен отображать все регистры в этом банке.

Мне просто нужно избегать повторного программирования для тестирования регистра, я пытаюсь следующим образом

select register bank= Bank1(* user  will enter this value) //
//now i want to show all register name in bank 1 for example//
ddr3_control_char
ddl_control_char

после этого я хочу отправить данные в выбранный регистр. может кто-нибудь предложить мне какую-нибудь идею. Я просто не хочу копировать вставить имя регистра снова, потому что длина моего кода будет больше, поэтому, чтобы избежать этого, я хочу предложение.

1 Ответ

1 голос
/ 15 февраля 2020

Вы можете реализовать эту функцию для каждого типа Bank индивидуально, а затем использовать наследование, например,

using ValueType = size_t;
using Dump = std::unordered_map<std::string, Value_type>;
struct Bank {
    virtual Dump dump() const = 0;
};
struct Bank0 : public Bank {
    Dump dump() const override {
        return Dump();
    }
};
struct Bank1 : public Bank {
    Dump dump() const override {
        return Dump();
    }
};
...