首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++多重继承:函数不匹配?

C++多重继承:函数不匹配?
EN

Stack Overflow用户
提问于 2016-07-07 20:30:09
回答 1查看 52关注 0票数 0

C++不允许我构造SymIntPoly类型的对象并对其调用f()。下面是类和结构。

代码语言:javascript
复制
template<typename T>
struct SymPoly
{
    T f() { return this->x; }
};

struct IntPoly
{
    int x;
    virtual int f() = 0;
};

struct SymIntPoly : public IntPoly, public SymPoly<int>
{
};

我不了解编译器,但我觉得编译器不会将这两个函数视为相同的函数(即,它们不具有相同的内部签名?)

我尝试做的另一种方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-07-07 20:59:23

你对那个可怜的编译器要求太多了。如果它开始允许这种事情,情况可能会变得非常模糊。

幸运的是,帮助它找出你想要的并不难。试试像这样的东西

代码语言:javascript
复制
template<typename T>
struct SymPoly
{
    virtual T getX() =0;
    T f() { return getX(); }
};

struct IntPoly
{
    int x;
    virtual int f() = 0;
};

struct SymIntPoly : public IntPoly, public SymPoly<int>
{
    int getX() { return IntPoly::x; }
    int f() { return SymPoly<int>::f(); }
};

这段代码会编译。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38245530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档