是否有一种基于if条件使用typedef的简单方法?
示例:
int depth = someObject->getDepth();
if(depth == 32){
typedef float cast;
}
else{
typedef double cast;
}
cast *data = (cast)someObject->getData();
感谢
答案 0 :(得分:3)
不,你不能这样做,因为typedef
是一个静态的编译时结构。实际上,C ++中的整个类型系统是静态的。您可以使用boost::variant<float, double>
等内容解决问题。
答案 1 :(得分:3)
在另一个函数中重构实现:
template<class T>
void foo(T* data){
// ...
}
int depth = someObject->getDepth();
if(depth == 32)
foo(static_cast<float*>(someObject->getData());
else
foo(static_cast<double*>(someObject->getData());
答案 2 :(得分:1)
功能尽可能接近
template< class cast>
void do_task(cast* object) {
}
int main() {
int depth = someObject->getDepth();
if (depth == 32)
do_task( static_cast<float*>(someObject->getData()));
else
do_task( static_cast<double*>(someObject->getData()));
}