1
OpenVG의 C++ 래퍼를 작성하려고합니다. OpenVG는 디자인 상 매우 Open-GL입니다. 컨텍스트가 필요한 개체의 전역 인스턴스를 만드는 방법은 무엇입니까?
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);
}
};
불행하게도, OpenVG는이 기능 문맥을 필요로하고
vgCreatePath
가 더 OpenVG는 컨텍스트로 호출 될 경우 중단됩니다 : 여기에 경로 핸들에 대한 간단한 래퍼입니다. 이렇게하면 openVG 컨텍스트를 만들 수 있기 전에 (빌드를 작성하기 때문에) 코드에서 전역 경로 개체 개체를 테스트 목적으로 만들지 못하게됩니다. 이 문제를 방지 할 수있는 해결 방법이 있습니까?
개체 구성에서 핸들을 unitialized로 남겨 두는 것이 좋지 않은 생각입니다 ... 컨텍스트가없는 경우 Path 개체를 만들 때 전역 컨텍스트 만들기를 강제해야합니까?
의 @ ChristianRau : D 모든 컴파일러가 std에서 shared_ptr/weak_ptr을 가지고 있지 않기 때문에 Ude, boost dependency가 필요합니다. – SigTerm
글쎄, 필요한 것은 아니지만 대안 (그리고 확실하게 C++ 11이 지원 될 때 2 차적으로). 최신 표준에서 자신의 존재를 언급하지 않고 부스트 기능을 제안하면 좋지 않습니다. 하지만 당신이 내 역량에 대해 행동했을 가능성이 높고, 엄격한 요구 사항을 다른 요구 사항으로 대체해서는 안됩니다. 문제를 분명하게 만들었습니다. –
@ChristianRau : "최신 표준에서 자신의 존재를 언급하지 않고 부스트 기능을 제안하는 것은 나쁜 습관입니다."그건 내가 무시할 당신 개인 의견입니다. 질문은 C++ 11로 태그 화되지 않았습니다. 나중에 다른 사람들이 작성한 답변을 불필요하게 수정하지 마십시오. 모든 것을 편집 할 수 있다면 실제로 그렇게해야한다는 의미는 아닙니다. 이 예제는 간단한 개념을 보여줍니다. 부스트 또는 C++ 11을 사용하여 구현되는지 여부는 부적합합니다. – SigTerm