メソッドを文字列名で呼び出す方法を探します。メソッドを文字列で呼び出し、引数を渡します。
#include <iostream>
#include <string>
class myClass{
public:
void method1(int run){
std::cout << run << std::endl;
}
void method2(int run){
std::cout << run << std::endl;
}
};
int main(){
myClass mc;
std::string call;
call = "method1";
mc.call(1);
call = "method2";
mc.call(2);
}
しかし、その結果、ある
「MyClassクラスが」
「と呼んで」という名前のメンバーを持っていない私は、応答 "1" と "2" が必要です。
EDIT ::非常にありがとう、私は次の解決策を得る(私はすべての場合に良いですか分からない);
#include <iostream>
#include <string>
class myClass{
public:
void method1(int run){
std::cout << "Loaded method => " << run << std::endl;
}
void method2(int run){
std::cout << "Loaded method => " << run << std::endl;
}
void _loadMethods(int method, int params){
switch(method) {
case 1:
method1(params);
break;
case 2:
method2(params);
break;
default:
break;
}
}
};
int main(){
myClass mc;
std::string method;
method = "method2";
if(method == "method1"){
mc._loadMethods(1, 1);
}
if(method == "method2"){
mc._loadMethods(2, 2);
}
}
感謝の
マクロを使用してください。 – CinCout
C!= C++。適切にタグ付けする。 – tambre
私はこれを邪魔しなくてはなりません.CとC++は異なる言語です。さて、あなたの質問に答えるために、C++はリフレクションをサポートしていません。関数の名前をキーとして、関数ポインタを値 – Vanna