我想问一下C ++中的typedef变量
好的,现在我正在使用PCL,我想将代码分为.h和.cpp
这是我的.h文件
template <typename PointType>
class OpenNIViewer
{
public:
typedef pcl::PointCloud<PointType> Cloud;
typedef typename Cloud::ConstPtr CloudConstPtr;
...
...
CloudConstPtr getLatestCloud ();
...
...
};
然后在其他.cpp文件上定义getLatestCloud()
template <typename PointType>
CloudConstPtr OpenNIViewer<PointType>::getLatestCloud ()
{
...
}
然后我收到C4430错误,因为它无法识别返回类型CloudConstPtr
抱歉这个愚蠢的问题:D
最佳答案
CloudConstPtr
是嵌套类型,因此还需要使用范围限定它:
template <typename PointType>
typename OpenNIViewer<PointType>::CloudConstPtr OpenNIViewer<PointType>::getLatestCloud ()
{
...
}
但是然后它仍然不起作用:这是因为您已经在
.cpp
文件中定义了它。对于模板,定义应在.h
文件本身中可用。最简单的方法是在类本身中定义每个成员函数。不要写.cpp
文件。