Vulkan을 배우는 동안 VulkanCookbook에 몇 가지 코드가 나타났습니다. VulkanCookbook에서 저자는 Vulkan 함수와 클래스를 직접 가져 오기위한 코드를 작성합니다. 글쎄 난 천천히 Vulkan을위한 LunarG의 SDK로 변환 해왔다. 64 비트 VkFence에서 VkFence_T *에 문제가 생겼다. VkFence_T *에 문제가 생겼다. 32 비트에서는 typedef가 아닌 uint64_t가된다. 이 문제를 처리하거나 내가 가서 손으로 객체를 삭제하는 모든 예제 코드를 재 작업해야 할 어떤 좋은 방법이typedef를 사용한 템플릿 전문화
#include <iostream>
#include <stdint.h>
typedef uint64_t A;
typedef uint64_t B;
template<typename T>
class Handler
{
void DestroyObject(T parent);
};
template<>
inline void Handler<A>::DestroyObject(A object) {
std::cout << "destroy type A" << std::endl;
}
template<>
inline void Handler<B>::DestroyObject(B object) {
std::cout << "destroy type B!" << std::endl;
}
int main()
{}
아래에 유사한 코드를 사용 VkDestroyer에 대한 문제? 가능한 경우 32 비트 미만으로 컴파일하려고합니다.
죄송합니다.이 질문은 Google에서 언제나 부분적으로 템플리트를 작성하고 다른 비 관련 항목을 찾았 기 때문에 찾을 수 없었습니다. 그리고 컴파일러가 _A와 _B를보고있는 코드의 문제점을 이해하고 다른 이름을 지정하지 않고 uint64_t를 처리하면 DestroyObject 오버로드가 재정의 오류를 일으키는 동일한 템플리트 유형에 해당됩니다.
편집 : 실제로 핵심적인 문제가 아니므로 잘못된 이름 지정을 사용하여 코드를 수정했습니다.
@StoryTeller (a)는 문제를 해결하기 위해 어쨌든 존재합니까? (b) 내가 테스트 한 코드에서 실수로 해당 코드의 이전 버전을 붙여 넣었습니다. – Cieric
유형은 완전하게 필수 항목입니까? – StoryTeller
@StoryTeller 예, 20 명이 있습니다. 그들이 어떻게 작동하는지에 따라 나는 32 비트 모드에서 64 비트 포인터처럼 사용된다고 생각한다. – Cieric