我正在尝试构建自定义ORM。这是相同的基本代码。
class modelField
{
public:
modelField(int size) {__size__=size;};
modelField() {};
virtual ~modelField() {};
virtual std::string __type__() = 0;
virtual void set(std::string) = 0;
virtual void set(int) = 0;
int __size__ = -1;
};
class charField : public modelField
{
public:
charField(int value) : modelField(value) {};
charField() : modelField() {};
virtual void set(std::string val) {__value__ = val;};
virtual void set(int) {};
std::string __type__();
private:
int size;
std::string __value__;
};
现在charField只是一个列类型,我有更多范围从int到double。目前,我制作了两个虚拟方法set
并重载它们以接受不同的数据类型。但这似乎不是最好的方式。如何创建一个可以接受string / int / double或传递给它的其他值的泛型函数。
模板中可能有一些解决方案,但我无法想到任何解决方案。
我应该提到的另一件事是modelField
只是基础,可以有其他字段,比如说IPv4 addr
是charField的子节点。
提前感谢任何建议。