我确信这个问题在这里已经被感动了很多次,但是我真的找不到我所遇到的问题类型的答案。我有一个需要在其中保存数组的类。但是该数组的类型是可靠的(确切地说,取决于打开的wave文件的比特率是多少,例如8位-char,16位-short等)。我需要在类方法之一中定义它。
我的想法是使用auto
关键字声明指针:
class WaveReader {
//
auto *data;
};
然后,在方法内部:
void some_func(int datasize)
{
//
case 8:
data = new char[datasize];
break;
case 16:
data = new short[datasize];
break;
//
etc.
}
但这是一个愚蠢的主意。我知道最简单的方法是为每种类型声明数组,但是我想知道是否存在一种聪明的方法,也许可以使用一些模板?
非常感谢您的帮助。
最佳答案
auto
关键字不是为此设计的,将数据声明为:
void* data;
然后,您可以仅使用int或enum来跟踪数据类型。如,
typedef enum
{
CHAR,
SHORT
} DataTypeEnum;
...
DataTypeEnum dataType;
...
并如下修改您的代码:
void some_func(int datasize)
{
//
case 8:
data = static_cast<void*>(new char[datasize]);
dataType = CHAR;
break;
case 16:
data = static_cast<void*>(new short[datasize]);
dataType = SHORT;
break;
//
etc.
}
...
if( dataType == CHAR )
{
...
}
else if ( dataType == SHORT )
{
...
}
关于c++ - 编译时对象类型未知的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17810265/