Vulkanを学んでいるうちに、VulkanCookbookにいくつかのコードがあります。 VulkanCookbookでは、Vulkan関数とクラスを手作業でインポートするコードを記述しています。まあ、私はゆっくりとVulkanのLunarGのSDKに変換してきましたが、64ビットVkFenceでは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