C ++类错误“常量类编号”没有名为“ intValue”的成员

时间:2019-09-16 17:59:54

标签: c++ inheritance constructor parent children

如果我有测试代码:

Number const * n = nullptr;
double val = 0;
std::cin >> val;
n = new Integer( int( val ));
if( n->intValue() != int( val )) {
                std::cout << "intValue() is wrong\n";
}

我有一个Integer类,以便能够评估n-> intValue(),这是否意味着我必须在Integer类中创建一个方法调用intValue()?

我试图创建一个方法,但是显示错误'const class Number'没有名为'intValue'的成员。

我的班级代码:

#include <iostream>

using namespace std;

// Base class Number
class Number{
   public:
      Number(double theVal){
            val = theVal;
            cout << "Created a number with value " << val << endl;
      }
    protected:
      double val;
};

class Integer : public Number{
    public :
        Integer(int val):Number(val){\
        cout << "Created an integer with value " << val << endl;
         }

        int intValue(){
            return (int)val;
        }
        double doubleValue(){
            return (double)val;
        }

};

class Double : public Number{
    public :
        Double(double val):Number(val){
        cout << "Created a double with value " << val << endl;}

        int intValue(){
            return (int)val;
        }
        double doubleValue(){
            return (double)val;
        }
};

1 个答案:

答案 0 :(得分:1)

我猜n是Number *类型的,所以编译器不知道它是否是子类之一。您可以添加

virtual int intValue() = 0;

到您的父母班。查看纯虚函数here