如何使用另一个模板化 class 的实例来模板化 class?
How do I template a class using an instance of another templated class?
我有一个模板化的 gpio class:
template <gpio_types::port_t PORT, uint32_t PIN>
class gpio {};
我想创建一个 class 以 gpio
实例作为模板。问题出在下面这一行。
template <uart_types::flexcomm PERIPH, int RX_BUF_LEN, gpio<gpio_types::port_t PORT, uint32_t PIN> TX_PIN>
class uart_shared_n_block {};
最后我想这样用:
gpio<gpio_types::P1, 13> tx;
auto uart = uart_shared_n_block<uart_types::FC_4,2048,tx>();
如何正确地模板化 uart_shared_n_block
class?
这个
gpio<gpio_types::P1, 13> tx;
声明 tx
是类型 <gpio<gpio_types::P1, 13>>
的对象。 gpio<gpio_types::P1, 13>
不是模板,而是具体类型。如果你想将该类型作为参数传递给 uart_shared_n_block
那么,那将是:
template <uart_types::flexcomm PERIPH, int RX_BUF_LEN,
typename T>
class uart_shared_n_block {};
然后你可以通过
实例化它
auto uart = uart_shared_n_block<uart_types::FC_4,2048,gpio<gpio_types::P1, 13>>();
或
auto uart = uart_shared_n_block<uart_types::FC_4,2048,decltype(tx)>();
如果你真的想传递一个实例,而不是类型,那么我误解了这个问题;)。
我有一个模板化的 gpio class:
template <gpio_types::port_t PORT, uint32_t PIN>
class gpio {};
我想创建一个 class 以 gpio
实例作为模板。问题出在下面这一行。
template <uart_types::flexcomm PERIPH, int RX_BUF_LEN, gpio<gpio_types::port_t PORT, uint32_t PIN> TX_PIN>
class uart_shared_n_block {};
最后我想这样用:
gpio<gpio_types::P1, 13> tx;
auto uart = uart_shared_n_block<uart_types::FC_4,2048,tx>();
如何正确地模板化 uart_shared_n_block
class?
这个
gpio<gpio_types::P1, 13> tx;
声明 tx
是类型 <gpio<gpio_types::P1, 13>>
的对象。 gpio<gpio_types::P1, 13>
不是模板,而是具体类型。如果你想将该类型作为参数传递给 uart_shared_n_block
那么,那将是:
template <uart_types::flexcomm PERIPH, int RX_BUF_LEN,
typename T>
class uart_shared_n_block {};
然后你可以通过
实例化它auto uart = uart_shared_n_block<uart_types::FC_4,2048,gpio<gpio_types::P1, 13>>();
或
auto uart = uart_shared_n_block<uart_types::FC_4,2048,decltype(tx)>();
如果你真的想传递一个实例,而不是类型,那么我误解了这个问题;)。