我有一些类C
,想将其实例和方法的地址传递给测试函数中的某个仿函数Test_C_Foo1()
。Functor 是一个模板类,我必须提供类方法 ( MEMFN1
) 的类型作为其模板参数之一。我必须在MEMFN1
某处定义类型,但不想更改C.h
并且不想用它污染全局命名空间。我决定尽可能本地化typedef,所以把它放在一个测试函数中——在MEMFN1
实际使用的范围内。在函数体内使用 typedef 是一个好习惯吗?
标准允许在函数体内使用typedef ,仅在以下特定情况下限制它:
typedef 说明符不得在 decl-specifier-seq 中与除类型说明符外的任何其他类型的说明符组合,并且不得用于参数声明 (8.3.5) 的 decl-specifier-seq 或在函数定义 (8.4) 的 decl-specifier-seq 中。
这是代码片段:
频道:
...
#include <string>
...
class C
{
public:
int foo1(const std::string&);
};
主.cpp:
...
#include "C.h"
...
void Test_C_Foo1()
{
typedef int(C::*MEMFN1)(const std::string&);
C c;
Functor1<C, MEMFN1,...> f1(&c, &C1::foo1,...);
...
}
...
int main()
{
Test_C_Foo1();
return 0;
}