C++ class 错误'const class Number' has no member named 'intValue'

C++ class error'const class Number' has no member named 'intValue'

如果我有测试码:

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";
}

并且我有一个 class 整数,以便能够计算 n->intValue(),这是否意味着我必须在 class 整数中创建一个方法调用 intValue( ) ?

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

我的 class 代码:

#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;
        }
};

我猜 n 是 Number* 类型,所以编译器无法预先知道它是否是 child class 中的一个。您可以添加

virtual int intValue() = 0;

给你的 parent class。见纯虚函数here