2013-02-28 149 views
0

我已付出的OpenCV的專業模板,當我嘗試了一個專門的模板代碼的一次修改,我的命名空間中,我得到的錯誤:無法從另一個命名空間

make -k 

[100%] Building CXX object object_detection.cpp.o 
In file included from object_detection.cpp:1:0: 
object_detection.h:370:75: error: specialization of 'void cv::Ptr<_Tp>::delete_obj() [with _Tp = CvHaarClassifierCascade]' in different namespace [-fpermissive] 
object_detection.h:370:30: error: from definition of 'void cv::Ptr<_Tp>::delete_obj() [with _Tp = CvHaarClassifierCascade]' [-fpermissive] 

我明白我不應該能夠在不同的命名空間專門化模板代碼,但有沒有出路?

+0

在'cv'命名空間中專門化它有什麼問題?只需用'namespace cv {'' – 2013-02-28 19:25:41

+0

將你的專業化包裝在同一個命名空間中?用'命名空間cv {(專門化)'來環繞你的專業化'' – Cornstalks 2013-02-28 19:26:01

+0

是的,我能夠做到這一點。我只是想知道我是否只能在1個命名空間中使用這種專業化。但我會繼續這樣做。謝謝 – navderm 2013-03-01 13:34:23

回答

0
  1. 重新打開它們的命名空間,並專注於它。
  2. 對於函數,如果通過ADL忠實地使用函數,請在參數的名稱空間中創建覆蓋。
  3. 檢查源模板是否使用traits類或其他類似的技術,您可以攔截它。
相關問題