1
我有一個類模板,我想將它的實例作爲模板參數傳遞給另一個類模板。如:如何將模板類實例作爲模板參數傳遞給另一個模板?
typedef Pin<(uint16_t)&PORTB,0> B0;
typedef Pin<(uint16_t)&PORTB,1> B1;
後來我想通過他們,如:
Indicator<B0,B1> Ind1;
引腳類模板,我使用:
template <uint16_t tPort, uint8_t tBit>
class Pin
{
public:
static constexpr uint16_t Port = tPort;
static constexpr uint16_t DDR = tPort-1;
static constexpr uint16_t PIn = tPort-2;
static constexpr uint8_t Bit = tBit;
static constexpr void Toggle()
{
*reinterpret_cast<uint16_t*>(Port) ^= (1<<Bit);
}
static constexpr void PullHigh()
{
*reinterpret_cast<uint16_t*>(Port) |= (1<<Bit);
}
static constexpr void PullLow()
{
*reinterpret_cast<uint16_t*>(Port) &= ~(1<<Bit);
}
static constexpr void SetOutput()
{
*reinterpret_cast<uint16_t*>(DDR) &= ~(1<<Bit);
}
static constexpr void SetInput()
{
*reinterpret_cast<uint16_t*>(DDR) |= (1<<Bit);
}
static constexpr void SetHighImpedance()
{
*reinterpret_cast<uint16_t*>(Port) &= ~(1<<Bit);
*reinterpret_cast<uint16_t*>(DDR) &= ~(1<<Bit);
}
static constexpr bool Read()
{
return (*reinterpret_cast<uint16_t*>(PIn) & (1<<Bit));
}
};
我已經能夠將它們傳遞給模板函數。我假設模板模板參數可能是答案。但一直未能得到它的工作...