16-ma’ruza. Obyektga yo’naltirilgan dasturlashda parametrlash. Amallarni qayta yuklash. Funksiya shablonlari va ulardan foydalanish



Yüklə 103,92 Kb.
səhifə6/7
tarix14.03.2023
ölçüsü103,92 Kb.
#87765
1   2   3   4   5   6   7
3.126-listing
#include
class Dollars
{
private:
int m_dollars;
public:
Dollars(int dollars)
: m_dollars(dollars)
{
}

friend bool operator>(const Dollars &d1, const Dollars &d2)


{
return (d1.m_dollars > d2.m_dollars);
}
};

template


T average(T *array, int length)
{
T sum = 0;
for (int count=0; count < length; ++count)
sum += array[count];

sum /= length;


return sum;
}

int main()


{
Dollars array3[] = { Dollars(7), Dollars(12), Dollars(18), Dollars(15) };
cout << average(array3, 4) << '\n';

return 0;


}

Natijada quyidagi xatolikni olamiz:


"basic_ostream &operator <<(basic_ostream &,unsigned char)" 1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\ostream(1047): note: или "basic_ostream &operator <<(basic_ostream &,const error_code &)" 1>c:\users\kicli\source\repos\consoleapplication10\consoleapplication10\consoleapplication10.cpp(37): note: при попытке сопоставить список аргументов "(ostream, T)"
1> with 1> [ 1> T=Dollars1> ]
Yuqoridagi mavzuda aytilganidek, murakkab xatoliklar paydo boʻlmoqda. Bunday katta “xato” ga qaramay, bu holatda hamma narsa juda oddiy. Birinchi satrlarda aytilishicha, kompilyator Dollars sinfi uchun << operatorining qayta yuklanishini topa olmagan. Quyida taqqoslash uchun chaqirilgan, ammo mos kelmaydigan ma’lumotlar turlariga ega funksiyalar keltirilgan va oxirida u shablon parametrini va almashtiriladigan (haqiqiy) parametr turini belgilaydi.
average() Dollars sinfining obyektini qaytaradi va bu obyektni << va cout chiqarish operatori yordamida chiqarish-ga harakat qilinmoqda. Biroq, Dollars sinfi uchun << operatorini qayta yuklanmadi. Bu holat bartaraf etilgan misol (3.127-listing)ni koʻrib chiqamiz:

Yüklə 103,92 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin