在c ++子类

时间:2016-07-09 06:24:09

标签: c++

我正在尝试构建自定义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的子节点。 提前感谢任何建议。

0 个答案:

没有答案