我正在使用C語言編寫的庫,並且該庫提供了僅使用void *的頭文件。該庫用於創建一種圖形,該圖形存儲在C數據庫中。標題返回void *到圖中的節點。爲了創建圖,我需要解析一堆讓我們說節點名稱。與堆棧節點名稱並行,我需要爲節點維護一個堆棧void *。我有這樣的事情:如何在堆棧中存儲void * C++容器
std::stack < void* > nodeStack;
while (!nodeNameStack.empty()) {
// check if nodeNamestack.front() meets some criteria
nodeStack.push(C_API_To_Create_Node(nodeNameStack.pop()));
// Do some processing
// check if nodeStack.size() >= 2
void *node1 = nodeStack.pop()
void *node2 = nodeStack.pop()
// Above line issues error saying void value not ignored as it ought to be..
我不知道是什麼問題,因爲我們保證nodeStack大小ATLEAST 2.我將不勝感激任何建議,以克服這種錯誤..
通過解釋 - 因爲這是一個C++怪癖 - 這是爲了允許編寫異常安全的代碼。寫在這個問題上的很多,例如http://www.gotw.ca/gotw/008.htm – 2011-06-15 03:41:25