【问题标题】:no known conversion for argument 1 from [mother class] to [child class]没有已知的参数 1 从 [mother class] 到 [child class] 的转换
【发布时间】:2014-11-20 13:25:07
【问题描述】:

这是我的问题,我尝试将 [Mother class] 的内容复制到 [Child class] 中,如下所示:


    class Trick
    {
    public:
        Trick();

    protected:
        std::string _name;
        int _point;
    };

    class TrickGraph : public Trick
    {
    public:
        TrickGraph();

    protected:
        sf::Vector2i _pos;
        sf::Vector2u _size;
    };

    class Sheet
    {
    public:
        Sheet()
        {
            _trick = NULL;
        }

        void set_trick(const Trick *trick)
        {
             if (_trick)
                 delete _trick;
            _trick = new TrickGraph();
            *(_trick) = *trick;
        }

    protected:
        TrickGraph *_trick;
    };

然后 g++ 在*(_trick) = *trick; 行打印此错误:


`In member function ‘void Sheet::set_trick(const Trick*)’:`
`error: no match for ‘operator=’ in ‘*((Sheet*)this)->Sheet::_trick = * trick’`
`note: candidate is:`
`note: TrickGraph& TrickGraph::operator=(const TrickGraph&)`
`note:   no known conversion for argument 1 from ‘const Trick’ to ‘const TrickGraph&’`
`make: *** [...] Error 1`

我尝试了很多方法来解决它,但正如您所见,我在堆栈溢出上发布... 所以如果你能帮助我,那就太好了:D

【问题讨论】:

  • Works for me 如果我删除第一行中的流氓:。错误真的来自这段代码吗?
  • 对不起,我错过了输入... :S 我然后编辑它
  • 不,g++ 不会使用该代码产生该错误,即使您修复了琐碎的错误。发布一些重现错误的代码。
  • 好的,我不想发布所有代码直奔主题,但它可能更复杂:S 我正在编辑它
  • 在发布代码之前,将您要发布的确切代码复制并粘贴到ideone.com,然后点击运行。它是否给出了您所询问的相同错误?不?你在浪费大家的时间。

标签: c++ class type-conversion


【解决方案1】:

最后,我以另一种可行的方式做到了。我在 TrickGraph 中设置了 Trick *_trick 属性,顺便说一下,它不是 Trick 的子项。我不得不改变一些东西才能使它起作用,但是……它起作用了!

感谢 n.m.

【讨论】:

    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多