Khuôn hình hàm mảng phân số

Em mới học về khuôn hình nên có gì sai sót trong bài thì mọi người cứ góp ý để em cải thiện ạ

#include<iostream>
using namespace std;

template <class T>
class ps
{
	T a[100];
	int n;
    T tu;
    T mau;
public:
	void input();
	void output();
};

template <class T>
void ps<T>::input(){
	cout<<"Nhap so luong phan so: ";cin>>n;
	for(int i=0;i<n;i++){
		cout<<"\nNhap tu so va mau so phan so thu "<<i+1<<": ";
		cin>>a[i].tu>>a[i].mau;
	}
}

template <class T>
void ps<T>::output(){
	for(int i=0;i<n;i++){
		cout<<"\nPhan so thu "<<i+1<<": "<<a[i].tu<<"/"<<a[i].mau;
	}
}

int main(){
    ps<int> psnguyen;
    psnguyen.input();
    psnguyen.output();
    return 0;
}

Bài này của em đang bị lỗi này và không biết fix như nào ạ:
[Error] request for member ‘mau’ in ‘((ps*)this)->ps::a[i]’, which is of non-class type 'int’

Mảng a có kiểu là T, làm sao bạn có thể gọi a[i].tua[i].mau được?

3 Likes

Mình cứ nghĩ là cho tu và mau cũng cùng kiểu T là được. Vậy làm phải sửa lại như nào ạ?

Kiểu T có nghĩa là bất cứ kiểu gì.

Mà bài này làm về phân số thì bạn chỉ dùng số nguyên int, long thôi chứ. Dùng template làm gì??? Sai bét.

2 Likes

Đề bài của mình ghi dùng khuôn hình mà

Xây dựng khuôn hình hàm max để tìm phần tử lớn nhất của mảng các phần tử nguyên, mảng phần tử thực, mảng ký tự, mảng phân số

Đúng là đề bài có yêu cầu dùng, nhưng bạn có chắc là nó dùng cho lớp ps (phân số) không?
MAX.
Nó chỉ yêu cầu dùng cho cái MAX thôi.

3 Likes

Chắc mình hiểu sai đề bài, cảm ơn bạn đã chỉ

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?