【发布时间】:2015-01-29 21:45:38
【问题描述】:
我是 C++ 新手。所以我正在尝试做一些微不足道但无法弄清楚如何做的事情。
我有一个名为 Method 的类:
class Method{
private:
std::string nameMethod;
Func f;
public:
Method(std::string name,Func fun){
nameMethod=name;
f=fun;
};
我想创建一个名为 methDaniel 的 Method 类型的对象,它有
- 字符串名称方法 = addDaniel.
- f = 打印“Daniel”的函数。
如何在 main.cpp 文件中执行此操作?
#include "Method.h"
using namespace std;
typedef void (*t_somefunc)();
void addDaniel(){
cout<<"Daniel";
}
int main(){
addDaniel();
t_somefunc afunc = &addDaniel;
Method* methDaniel = new Method("addDaniel",afunc);
}
【问题讨论】:
-
为什么不直接使用
std::map<std::string,t_somefunc>?Func实际上是什么? -
"depends" 但我可能会使用
std::unordered_map<std::string,std::function<FUNC>>(语法有点错误,但你明白了) -
您不需要
new在 C++ 中创建对象。 -
顺便说一句,C++ 中的
function在许多其他 OO 语言中被称为method,并且该术语通常可以互换使用。这可能是我的失败,当然也不是彻底的错误,但是一个名为 method 的类看起来可能会令人困惑,而且通常读取不正确。
标签: c++ function reflection methods