C++ 是否有一种优雅的方法可以根据用户输入只决定一次?

C++ 是否有一种优雅的方法可以根据用户输入只决定一次?,c++,user-input,C++,User Input,最近,我试着写一篇短文。在我的代码的许多部分中,我需要根据用户输入来决定。例如,我需要根据用户输入的8位或16位选择缓冲区类型。我实现了这段代码,它完成了我的工作: if (requestedbitsNumber == 8) mxMalloc(sizeof(unsigned __int8)*NumberOfElements); if (requestedbitsNumber == 16) mxMalloc(sizeof(unsigned __int16)*NumberOfElem

最近,我试着写一篇短文。在我的代码的许多部分中,我需要根据用户输入来决定。例如,我需要根据用户输入的8位或16位选择缓冲区类型。我实现了这段代码,它完成了我的工作:

if (requestedbitsNumber == 8)
    mxMalloc(sizeof(unsigned __int8)*NumberOfElements);
if (requestedbitsNumber == 16)
    mxMalloc(sizeof(unsigned __int16)*NumberOfElements);
现在,我想知道是否有一种优雅的方式来定义宏和其他东西,以便根据用户输入只决定一次?大概是这样的:

if (requestedbitsNumber == 8)
    #define dataType  unsigned __int8
if (requestedbitsNumber == 16)
    #define dataType  unsigned __int16
并在需要时使用datType。我知道define是预处理器指令,在编译代码之前就已经使用了。 我用它只是为了表达我的意思。谢谢。

使用模板

所以你写了这样的东西:

if (requestedbitsNumber == 8)
    X<unsigned __int8>();
if (requestedbitsNumber == 16)
    X<unsigned __int16>();
可以将X实现为函数或类

要转换指针,您可以在X中写入以下内容:


pointerToInteger=YourIntegerType*myVoidPointer

不需要存储数据类型,只需将某个size\t变量设置为sizeofunsigned\uu intX,其中X是正确的数字。或者,只需执行mxMallocrequestedbitsNumber/8*NumberOfElements;。我在哪里创建缓冲区,您是对的。但是,我需要在哪里将一个空指针转换为一个特定的类型呢。类似于myUin16Pointer=unsigned\uu int16*myVoidPointer;你能解释一下我如何通过你的建议将一个空指针转换为一个特定的类型吗?我需要指针转换来将参数传递给我的函数。假设我有一个函数,如:myFunctionunsigned\uu int16*myVoidPointer。如何使用X来实现这一点?如果是琐碎的,我很抱歉。我是新手。@GmtK将myFunction实现为类X的成员函数。