0
我有一些代碼,創建一個同步的隊列,我在一個數據收集類用來報告它的數據。它創建隊列的方法被踢了一個警告:這是否真的返回本地地址?
Queue^% DataGatherer::AddOutputQueue()
{
Queue^ outputQueue = Queue::Synchronized(gcnew Queue);
AddOutputQueue(outputQueue);
return outputQueue;
}
1> \ DataGatherer.cpp(21):警告C4172:返回局部變量的地址或臨時
這是一個警告我應該擔心的還是我的安全在這種情況下,它只是編譯器弄不清Queue::Synchronized
返回Queue^
?該代碼似乎運行正常,但警告讓我緊張;-)
任何想法,我怎麼能得到函數返回這兩個DataGatherer類和調用者可以使用一個參考? 我同意有關的事實可能並不總是工作點;這是我問這個問題的最主要原因:-) – 2010-02-02 12:37:45
要返回一個引用,你需要創建堆中引用的對象而不是堆棧。我不明白爲什麼你應該這樣做,但是在你的代碼中,Queue ^是一種以某種方式作爲參考的句柄。 – user231967 2010-02-02 13:09:04
糾正我,如果我錯了,但不是什麼'gcnew Queue'呢? AFAIU syncronized位只是封裝了底層類以使其線程安全。至少,這是我的意圖...... – 2010-02-02 13:12:21