c – 动态编译时基类
发布时间:2020-12-16 07:07:02 所属栏目:百科 来源:网络整理
导读:请注意这只是一个关于模板语法的问题 – 不是一般的面向对象,多态设计.该示例是用于该目的的制造 假设我有一个基类: class A: public B{...}; 我用它… A a;a.DoSomething(); 如果我想做这样的事情,能够有一个A的编译时推导,不仅来自B而且来自其他类.所以我
请注意这只是一个关于模板语法的问题 – 不是一般的面向对象,多态设计.该示例是用于该目的的制造
假设我有一个基类: class A: public B { ... }; 我用它… A a; a.DoSomething(); 如果我想做这样的事情,能够有一个A的编译时推导,不仅来自B而且来自其他类.所以我可以像这样使用它: A<B> a; // like class A : public B a.doSomething(); A<C> ac; // like class A : public C ac.DoSomething(); 我可以这样做吗? template <typename BASECLASS> class A : public BASECLASS { ... }; 让我们假设我的构造函数有一个参数,我知道我用于基类的任何模板都有相同的签名.如果是这样,这是* .h文件,你怎么处理* .cpp文件?初始化构造函数是否合法? A::A(int param) : BASECLASS(param) { } 请注意这只是一个关于模板语法的问题 – 不是一般的面向对象,多态设计. 解决方法
您的示例中的语法正确.这是一个最小的可编译示例.
template <class Base> class A : public Base { }; class B { public: void doSomething() {} }; class C { public: void doSomething() {} }; int main() { A<B> a; // like class A : public B a.doSomething(); A<C> ac; // like class A : public C ac.doSomething(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |