我有一些类,C并希望将其实例和方法的地址传递给测试函数中的某个仿函数Test_C_Foo1().Functor是一个模板类,我必须提供类method(MEMFN1)的类型作为其模板参数之一.我必须在MEMFN1某处定义类型但不想更改C.h并且不希望用它污染全局命名空间.我决定尽可能本地化typedef,所以把它放在一个测试函数中 - 在MEMFN1实际使用的范围内.在函数体内部使用typedef是一个很好的做法吗?
Standard允许在函数体内使用typedef,仅在这些特定情况下限制它:
除了类型说明符之外,typedef说明符不应在decl-specifier-seq中与任何其他类型的说明符组合,并且它不应在参数声明(8.3.5)的decl-specifier-seq中使用,也不得用于在函数定义(8.4)的decl-specifier-seq中.
这是代码片段:
CH:
...
#include <string>
...
class C
{
public:
int foo1(const std::string&);
};
Run Code Online (Sandbox Code Playgroud)
main.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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14721 次 |
| 最近记录: |