Шаблон проектирования 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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