我也看到,它已经在这里问: C++: Template Parameter Cyclic Dependency模板参数循环依赖
但我不太明白接受的答案在那里。
因此,让我重申这里的问题。
比方说,我有:
template <class P>
class Consumer {
P m_producer;
public:
void consume(char* data, uint32_t length) {
if (/* some error condition */) {
m_producer.errorCallback();
}
}
}
template <class C>
class Producer {
C m_consumer;
void produce() {
char* someData;
uint32_t length;
m_consumer.consume(someData, length);
}
}
// Pseudocode -- not valid C++.
Producer<Consumer> c;
Consumer<Producer> p;
正如你可以看到,生产者需要调用消费者,和消费者需要调用生产者;并且两者都依赖于其他模板参数。
不使用任何虚拟类(接口)来解决这种模板参数的最佳方法是什么?
在此先感谢。
一个需要在另一个之前创建,并将其作为参考传递给另一个,将其作为指针存储。 – Simple
为什么消费者是生产者的模板参数?你真的想要一个只能为特定消费者生产东西的生产者吗?一旦你放弃这个限制,就再也没有圈子了。 – user463035818
@ tobi303因为我有不同的消费者,我想避免虚拟表 – Hei