Clo*_*kex 5 c++ templates member
我想要做的是创建一个接受任何类或结构(通过模板)的函数,但也让函数假定传入的类或结构中总是有一个特定的成员.
在可能不正确的代码中,它看起来像这样:
template <class inputType>
int doSomething(inputType voxel)
{
return voxel.density;
}
Run Code Online (Sandbox Code Playgroud)
我希望它假设density
成员将永远在那里并且它将永远是int
(或其他).我能这样做吗?如果是这样,如果density
不存在会发生什么?它会简单地抛出编译器错误吗?
它是完全合法的,C++中的模板无法与不同的方法(想想Java)相比,类型通过保持类型变量来检查泛型方法.
使用您正在使用的每种可能类型编译C++模板,因此编译每个特定类型的每个实例都会进行编译和类型检查.如果您尝试访问未使用的类型的字段,doSomething
则会出现编译器错误.