Шаблон проектирования C++ для эффективного соединения шаблонных и нешаблонных классов.C++

Программы на C++. Форум разработчиков
Anonymous
Шаблон проектирования C++ для эффективного соединения шаблонных и нешаблонных классов.

Сообщение Anonymous »

Я завершаю реализацию ВМ (часть АЛУ) добавлением операций в Сопроцессор. В этом смысле я ищу дизайн C++.
С помощью шаблона виртуальная машина создается двумя способами: первый, при котором манипуляции с памятью являются прямыми (uint8_t*). Контролируемая секунда (MemoryProtect)
uint8_t mem[3] = {11,22,33};

VM vmr(mem);
VM vmp(mem);

После создания экземпляра виртуальная машина манипулирует своей памятью с помощью функций, не являющихся членами, таких как:
template inline T readPointer(uint8_t *mem) { return *reinterpret_cast(mem); }
template inline T readPointer(const ByteRef &b)

MemoryProtect использует ByteRef. Но я не хочу подробно описывать эту часть.
Мой вопрос: как заставить класс Copro манипулировать памятью виртуальной машины, не зная ее типа и не выполняя приведение или вызов виртуального метода в функции exec Copro? Функция exec — это функция с очень горячим циклом. Итак, это сильное ограничение. В идеале хотелось бы сделать так, чтобы весь этот бардак расширялся пользователями. Поэтому априори исключите любое решение по разрешению во время компиляции.

Я не в восторге от того, чтобы сделать Copro шаблонным классом. Может быть, я слишком многого прошу?
Вот исходный код, который я добровольно упростил. Спасибо.
#include
#include

class MemoryProtect {
public:
uint8_t *m_a;
};

void read(const uint8_t* c, const uint8_t offset) { std::cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... efficientl

Вернуться в «C++»