代码之家  ›  专栏  ›  技术社区  ›  Francesco Belladonna

C++抽象类不能有一个具有该类参数的方法

c++
  •  14
  • Francesco Belladonna  · 技术社区  · 14 年前

    我创建了这个.h文件

    #pragma once
    
    namespace Core
    {
        class IComparableObject
        {
        public:
                virtual int CompareTo(IComparableObject obj)=0;
        };
    }
    

    但编译器不喜欢 IComparableObject对象对象 参数,如果该方法是虚拟纯的,而

    virtual int CompareTo(IComparableObject obj) {}
    

    没关系,不过我希望它是纯虚拟的。我怎样才能做到?有可能吗?

    4 回复  |  直到 12 年前
        1
  •  26
  •   dennycrane    8 年前

    obj

    virtual int CompareTo(IComparableObject const &obj)=0;
    

    CompareTo slicing

        2
  •  8
  •   Yttrill    14 年前

    virtual int CompareTo(IComparableObject const &obj)=0;
    

    struct MyComparable : IComparableObject {
      int CompareTo(IComparableObject &other) { .. }
    };
    

    ..

    struct MyComparable : IComparableObject {
      int CompareTo(MyComparable &other) { .. }
    };
    

    struct MyComparable : IComparableObject {
      int CompareTo(IComparableObject &other) {
         try 
           MyComparable &sibling = dynamic_cast(other);
           ...
        catch (..) { return 0; }
      }
    };
    

    struct IComparableObject { virtual int CompareTo(IComparableObject obj)=0; };
    

    struct MyComparable : IComparableObject {
      int CompareTo(IComparableObject &other) { throw 00; }
    };
    

    template<class T, class U> int compare(T,U);
    

        3
  •  2
  •   outis    14 年前

    obj

        4
  •  2
  •   Cheers and hth. - Alf    14 年前

    CompareTo IComparableObject

    const

    IComparableObject const&


    #pragma once