Es gibt eine spezielle C++-Vorlagenklassenvariante, bei der der Vorlagenparameter weggelassen wirdC++

Programme in C++. Entwicklerforum
Anonymous
 Es gibt eine spezielle C++-Vorlagenklassenvariante, bei der der Vorlagenparameter weggelassen wird

Post by Anonymous »

Ich habe eine Vorlagenklasse mit einem Parameter und einer Reihe kleiner Mitgliedsfunktionen.

Code: Select all

template
class SFRegT {
public:

void Reset() const {
*(volatile uint32_t*)mRegAddr = 0;
}

void Set(uint32_t  Value) const {
*(uint32_t*)mRegAddr = Value;
}

uint32_t Get() const {
return *(volatile uint32_t*)mRegAddr;
}

uint32_t  operator()() const { return Get(); }

void setBit(const uint16_t BitPos) const {
setSFRBit(mRegAddr, BitPos);
}
// and some more member
};
Jetzt brauche ich eine weitere ähnliche Klasse, bei der mein Parameter kein Vorlagenparameter mehr ist, sondern eine constexpr-Mitgliedsvariable.

Code: Select all

template
class SFRegT {
public:
constexpr SFReg(uintptr_t RegAddr) :
mRegAddr(RegAddr) {
}
// the same member functions as above
private:
const uintptr_t mRegAddr;
};
Gibt es eine Möglichkeit, die Redundanz zu vermeiden? Sie haben also nur eine Vorlagenklasse mit zwei Varianten: eine, bei der der Konstruktor und die Mitgliedsvariable weggelassen werden, wenn der Vorlagenparameter vorhanden ist, und die andere, bei der der Konstruktor und der lokale Parameter vorhanden sind, wenn der Vorlagenparameter weggelassen wird.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post