我想像在 JavaScript 中一样在运行时创建对象:
person=new Object();
person.firstname="John";
我将解析 json 并保存到对象。方法将提前知道并编译。我创建了这个简单的例子,我想知道我是否走对了路。
通过字符串添加和调用方法;男性和女性功能将作为对象的方法添加到对象中。
现在在对象中是属性性别,但后来我想对函数做同样的事情。通过方法setProperty
并getProperty
在对象中声明。这是个好主意吗?
typedef struct method
{
(void)(*method_fn)(Object * _this, string params);
string method_name;
} method;
class Object{
private:
vector<method> methods;
public:
string gender;
Object(){};
~Object(){};
void addMethod(method metoda);
bool callMethod(string methodName,string params);
};
void male(Object *_this,string params) {
_this->gender="Male";
}
void female(Object* _this,string params) {
_this->gender="Female";
}
void Object::addMethod(method metoda)
{
methods.push_back(metoda);
}
bool Object::callMethod(string methodName,string params){
for(unsigned int i=0;i<methods.size();i++)
{
if(methods[i].method_name.compare(methodName)==0)
{
(*(methods[i].method_fn))(this,params);
return true;
}
}
return false;
}
使用它是工作。
int _tmain(int argc, _TCHAR* argv[])
{
Object *object1 = new Object();
Object *object2 = new Object();
method new_method;
new_method.method_fn=♂
new_method.method_name="method1";
object2->addMethod(new_method);
new_method.method_fn=♀
new_method.method_name="method2";
object2->addMethod(new_method);
object1->callMethod("method1","");
object2->callMethod("method2","");
return 0;
}