Это миксин и можно ли это сделать в C ++?

У меня есть собственный шаблон класса массива, в который я хотел бы при желании добавить функциональность.

В качестве примера функциональности возьмем поддержку многопоточности: в некоторых случаях мне нужны массивы, которые помещают #pragma omp atomic непосредственно перед любым кодом обновления (директива компилятора, которая обеспечивает атомарное поведение, подробности не раскрываются) t важно). В других случаях мне нужны массивы, которые этого не делают, так как я знаю, что они будут обновляться только безопасно, и мне нужно избегать снижения производительности.

Интуитивно должно быть возможно определить класс под названием AtomicUpdates , от которого я могу наследовать. Итак, чтобы определить двойной массив с атомарными обновлениями, я бы сказал что-то вроде

class AtomicDoubleArray : public MyArray<double>, public AtomicUpdates {};

. Но я не понимаю, как это реализовать на практике, а также это нарушит принцип наследования интерфейса, а не реализации .

Может ли кто-нибудь объяснить мне, чем я действительно хочу здесь заниматься?

5
задан Sideshow Bob 24 January 2012 в 13:59
поделиться