如果我在一个结构(函数式)中typedef了一些类型,typedef的作用域是不是结构的局部的?
考虑下面的例子,我在两个单独的函数器中将foo定义为一个int和一个double。这个例子是正确的吗?
template <typename T>
struct firstfunctor
{
typedef int foo;
foo operator()(const foo& a, const foo& b)
{
return /*whatever*/
}
};
template <typename T>
struct secondfunctor
{
typedef double foo;
foo operator()(const foo& a, const foo& b)
{
return /*whatever*/
}
}; 发布于 2012-01-13 02:45:05
是的,typedefs的作用域是有范围的,您可以分别定义成员类型firstfunctor::foo和secondfunctor::foo。
发布于 2012-01-13 03:00:57
是的,typedefs是作用域。在使用它们时,必须指定作用域。
这适用于对象、类和库。作用域通常限于在一组{ }中定义的内容。
发布于 2012-01-13 02:45:28
是。
这也适用于函数和名称空间。
该类型将是firstfunctor<>::foo限定的。您可以将其设置为私有,尽管C++11的auto允许您绕过这一点。
https://stackoverflow.com/questions/8840501
复制相似问题