Đề bài đây ạ:
- Xây dựng lớp vector (đặt tên là TVector) có các thành phần
- Các thuộc tính thành phần có kiểu BẤT KỲ (int, char, float, double): x, y, z
- Có tối thiểu hai hàm tạo
- Có các phương thức: Nhập dữ liệu từ bàn phím, xuất dữ liệu ra màn hình
- Có phương thích tính độ lớn vector theo công thức (||v||=sqrt(x 2 +y 2 +z 2 ))
- Nạp chồng hoặc viết hàm bạn các toán tử so sánh: >, >=, <, <=, ==, != để so sánh độ lớn các vector
^Em chỉ hỏi về toán tử + thôi, các toán tử kia sẽ tự làm. Vấn đề ở đây là vector v1 có kiểu dữ liệu int, còn v2 với v3 kiểu float. Nếu v1 là float thì code ở dưới của em tự code chạy ổn không vấn đề gì, nhưng mà v1 lại có kiểu int nên khi chạy bị lỗi:
Error C244: “cannot convert from ‘TVector int’ to 'TVector float”
Ai giúp em với ạ!
#include <conio.h>
#include <iostream>
using namespace std;
template <class T>
class TVector
{
T x, y, z;
public:
TVector() : x{}, y{}, z{} { }
TVector(T a, T b, T c)
{
x = a; y = b; z = c;
}
template <typename U>
TVector operator+(TVector<U> vec)
{
TVector vec1;
vec1.x = this->x + vec.x;
vec1.y = this->y + vec.y;
vec1.z = this->z + vec.z;
return vec1;
};
void intput();
void output()
{
cout << x << endl << y << endl << z;
}
};
template <class T>
void TVector<T>::intput ()
{
cout << "Nhap x: "; cin >> x;
cout << "Nhap y: "; cin >> y;
cout << "Nhap z: "; cin >> z;
}
int main()
{
TVector<int> v1(5, 1, 33);
TVector<float> v2(6.11, 6.1, 5.1);
TVector<float> v3 = v1 + v2;
v3.output();
system("pause");
return 0;
}