숫자 값을 래핑하는 C++ 프로그램을 작성하려고합니다. 두 개의 간단한 함수와 연산자 오버로딩 함수를 처리 할 수퍼 클래스를 작성하여이 작업을 수행하고 있습니다.숫자 값 래퍼
주요 기능에#include <iostream>
#include <string>
#include <sstream>
using namespace std;
template <class T>
class Number {
protected:
T number;
public:
Number(T num) {
number = num;
}
string mytype() {
return typeid(number).name();
}
string what_am_i() {
ostringstream oss;
oss << "I am " << Number<T>::mytype() << " and my value is " << number;
return oss.str();
}
Number operator+ (Number an) {
Number brandNew = NULL;
brandNew.number = number + an.number;
return brandNew;
}
};
class MyInt : public Number<int> {
public:
MyInt() : Number<int>(0) {};
MyInt(int num) : Number<int>(num) {}
MyInt(const Number<int> &x) : Number<int>(x) {}
};
class MyFloat : public Number<float> {
public:
MyFloat() : Number<float>(0){};
MyFloat(float num) : Number(num){}
MyFloat(const Number<float> &x) : Number<float>(x) {}
};
class MyDouble : public Number<double> {
public:
MyDouble() : Number<double>(0){};
MyDouble(double num) : Number(num){}
MyDouble(const Number<double> &x) : Number<double>(x) {}
};
내가 좋아하는 뭔가를하고 싶으면 : 이것은 내가 지금까지 가지고있는 코드입니다
void main() {
MyInt two = 2;
MyFloat flo = 5.0f;
MyDouble md3 = flo + two;
}
을 그리고, 15.00000가 될 MD3 기원이의 지금 또한 최대 같은 유형의 객체는 훌륭하게 작동하지만 MyInt와 MyFloat를 추가하려고 할 때 컴파일러는 그것을 좋아하지 않습니다. 아무도 내가 이것을 구현할 수있는 아이디어가 있습니까?
그 이유는 추가 연산자가 현재 템플릿 과부하 (MyNumber 또는 MyFloat)에 대해서만 정의되어 있기 때문입니다. 연산자 +에 대한 템플릿이 필요합니다. – Geries