1
我試圖寫OpenVG的,這是非常開放-GL的C++包裝就像它的設計。 這裏是一個路徑手柄一個簡單的包裝:如何創建需要上下文的對象的全局實例?
class Path {
VGPath handle;
public:
Path() :
handle(vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F,
1,0,0,0, VG_PATH_CAPABILITY_ALL))
{
std::cout << "Path Handle created : " << (void*)handle << '\n';
}
~Path() {
std::cout << "Path destroyed : " << (void*)handle << '\n';
vgDestroyPath(handle);
}
};
不幸的是,開放式VG需要上下文來運作,並會退出vgCreatePath
被稱爲無OpenVG的背景。 這使我在我的代碼生成(用於測試目的),一個全球性的Path對象的對象,因爲它是建立之前,我可以創造一個開放式VG情況下(我的主這樣做)。 有沒有解決方法來防止這種情況?
我想離開的對象未初始化建設手柄是一個非常糟糕的主意......我要強迫一個全球範圍內的創作,當我創建一個路徑對象,如果沒有上下文存在?
@ ChristianRau:D Ude,boost依賴是必要的,因爲並非所有的編譯器在std中都有shared_ptr/weak_ptr。 – SigTerm
好吧,不是必需的,而是另一種選擇(當然,支持C++ 11的時候也是次要的)。一般的提升功能建議,甚至沒有提到他們在最新的標準存在是不好的做法。但你說得對,因爲我可能已經對我的能力採取了行動,不應該用另一個剛性要求來替代。明白了,DUDE。 –
@ChristianRau:「甚至沒有提到他們在最新標準中的提升特性的建議是不好的做法」這是你的個人意見,我將忽略它。這個問題沒有被標記爲C++ 11。請避免將來不必要地修改答案(由其他人撰寫) - 如果您可以編輯所有內容,這並不意味着您應該實際執行此操作。該例子說明了簡單的概念。無論是使用boost還是C++ 11實現都是無關緊要的。 – SigTerm