我也看到,它已經在這裏問: 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