说我们有以下声明:
typedef itk::Image<double, 2> FloatImageType;
void CreateF(FloatImageType::Pointer image)
{
...
}
我知道::
在函数中的含义。但是,在这种情况下,我们是按照以下方式阅读的吗?
class Pointer是FloatImageType类
的成员感谢。
答案 0 :(得分:2)
取决于Pointer
实际上是什么。
案例1:
namespace itk
{
template <class T, int X>
struct Image
{
typedef int Pointer;
};
}
这称为“成员typedef”。
案例2:
namespace itk
{
template <class T, int X>
struct Image
{
struct Pointer
{
};
};
}
这称为“嵌套类”。
案例3:
namespace itk
{
template <class T, int X>
struct Image
{
static int const Pointer = 0;
};
}
这显然不是一个类型,只是一个静态成员变量。
答案 1 :(得分:0)
但是,在这种情况下,我们是否按如下方式阅读? class Pointer是FloatImageType类的成员
不,它对编译器的描述如下:
我希望在
Pointer
模板类中定义FloatImageType
类型的实例(不知道哪些模板参数,所以我对任何模板参数都没问题。)
我不想要某个类型的实例(可能是偶然的)被称为Pointer
并且可能存在于全局命名空间中,或者是你从其他地方撤出的实例,我不是&# 39;关心。我明确地请求属于FloatImageType
的,没有什么不同。
(还有必要明确地将Pointer
的类型解析为FloatImageType
的成员,因为它位于类定义(或模板类中,因为它发生)中并且不会否则是可见的或者#34;已知&#34;。)