c++ 虚函数 如何返回vector

就是类似这样的classIGraph{public:virtualvector<int>getAll()=0;};之后还会有子类继承该接口如果直接写会编译错误,说temp... 就是类似这样的
class IGraph
{
public:
virtual vector<int> getAll() = 0;
};
之后还会有子类继承该接口

如果直接写会编译错误,说template can not be 'virtual' 什么的
但是这在java里是可以的
有没有什么在c++里实现的办法?
展开
 我来答
匿名用户
2018-10-05
展开全部
c++的模板都是编译时处理的, 所以你传入不同的泛型参数会生成不同的方法。 编译器在处理virtual 成员函数时会尝试生成一个固定size的vtable, 但是前面说过模板函数生成的函数不是固定的。 例如你调用 a::<int>(); a::<char>(); 这样就会生成两个成员函数。目前c++实现不了这种功能.
另外模板其实限制很多的。 其中有一条就是模板定义最好放在头文件, 这样文本汇合到一起的时候, 编译器才会根据上下文生成不同泛型类型的定义。但假如泛型定义在cpp里面, 由于cpp可能没有泛型使用的上下文,所以即使定义了, 也会发生链接错误(cpp不知道到底要生成哪个泛型的定义)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2018-10-05 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1235万
展开全部
可以这样写的,你的代码是对的,错误在其他地方。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式