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
如果我有测试码:
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