类自动创建基于成员名称的功能
class auto create functions based on member name
我有一个从内存读取的类。
有很多链接列表。
我试图通过以某种方式使用模板自动化函数来使我的代码变得更小。
我希望能够以getFunction name从其类Menber函数名称命名
namespace
{
class base
{
public:
class SList<class Random1Obj> Random1ObjList;
class SList<class Random2Obj> Random2ObjList;
class SList<class Random3Obj> Random3ObjList;
class SList<class Random4Obj> Random4ObjList;
};
std::vector<class Random1Obj*> getRandom1ObjList()
{
std::vector<class Random1Obj*> vRet;
base This = *(base*)((DWORD)GetModuleHandleA("random.dll"));
for (SLNode<Random1Obj>* node = This.Random1ObjList.Head(); node; node = node->Next())
{
vRet.push_back(node->Data());
}
return vRet;
}
std::vector<class Random2Obj*> getRandom2ObjList()
{
std::vector<class Random2Obj*> vRet;
base This = *(base*)((DWORD)GetModuleHandleA("random.dll"));
for (SLNode<Random2Obj>* node = This.Random2ObjList.Head(); node; node = node->Next())
{
vRet.push_back(node->Data());
}
return vRet;
}
.........
}
怎么样?
namespace
{
class base
{
public:
class SList<class Random1Obj> Random1ObjList;
class SList<class Random2Obj> Random2ObjList;
class SList<class Random3Obj> Random3ObjList;
class SList<class Random4Obj> Random4ObjList;
};
#define X(NAME, FUNNAME, DLL) std::vector<class NAME*> FUNNAME()
{
std::vector<class NAME*> vRet;
base This = *(base*)((DWORD)GetModuleHandleA(DLL));
for (SLNode<NAME>* node = This.Random1ObjList.Head(); node; node = node->Next())
{
vRet.push_back(node->Data());
}
return vRet;
}
X(Random1Obj, Random1ObjList, "random1.dll")
X(Random2Obj, Random2ObjList, "random2.dll")
X(Random3Obj, Random3ObjList, "random3.dll")
X(Random4Obj, Random4ObjList, "random4.dll")
#undef X
}
如果我了解您要通过模板尝试做什么,则要根据类型在编译时间选择成员变量。您不能真正这样做,但是可以使用一个信封类型,而不是为每个SLIST使用单独的成员变量。请参阅此处。
在您的情况下,这将是:
class base
{
public:
struct Lists :
SList<Random1Obj>,
SList<Random2Obj>,
SList<Random3Obj>,
SList<Random4Obj> {};
Lists lists;
};
template<class T>
std::vector<T*> getRandomObjList()
{
SList<T>& slist = This.lists;
...
}
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- 如何避免大多数成员功能相同的代码重复
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- C 函数调用包装器包含类成员功能作为模板参数
- 创建类成员功能
- 成员功能C 的不同实现
- 返回类型不可知模板类成员功能
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 超载类成员功能标记为const
- C 功能指针和成员功能指针
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 我可以使用Priority_queue的基础容器的成员功能
- 如何子类可运行任何成员功能
- 共享类时如何隐藏成员功能文件
- 从C文件访问C 类成员功能