Skocz do zawartości
wragler

Przeladowanie Operatora () I Czytanie Z Pliku

Rekomendowane odpowiedzi

Witam

mam klopot z przeladowaniem takiego operatora. Chcialbym to zorbic w programie zajmoujacym sie macierzami. Tzn ze zamiast podawac np. tab[1][0] to bym mogl wpisac tab(1,0).

Probowalem juz np. macierz operator(int x,int y)(&macierz) ale w sumie nie wiem jak to zorbic aby dobrze dzialalo.

I mam jeszcze jedno pytanie jak w c++ czytac z pliku zawierajacego liczby oddzielone spacjami i wczytywac je do tablicy i jak je zapisaywac od pliku.

 

Z gory dziekuje

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a czy musisz przeciążać operator? Nawet nie wiem czy się da przeciażyć nawiasy... bo one są chyab zastrzeżeone do funkcji.. ale mogę sie mylić :)

 

Ja nigdy nic nie przeciążałem (no moze pare razy), bez tego spokojnie można zyć :)

 

jak wczytać... za pomocą istream.. korzystając z przeciazonego operatora >>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a czy musisz przeciążać operator? Nawet nie wiem czy się da przeciażyć nawiasy... bo one są chyab zastrzeżeone do funkcji.. ale mogę sie mylić :)

Masz do tego prawo i wlasnie z niego skorzystales :)

 

Ja nigdy nic nie przeciążałem (no moze pare razy), bez tego spokojnie można zyć :)

Podobnie jak bez samochodow i wielu innych rzeczy, a jednak one ulatwiaja zycie.

 

Przeciazenie operatora () powinno wygladac mniej wiecej tak:

int operator() (int x, int y)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W tym operatorze mozesz sie odwolywac przez this do obiektu, wiec jesli masz jako pole ta tablice to sie po prostu do niej odwolaj. Wypadalo by tylko najpierw sprawdzic czy indexy nie przekraczaja dozwolonych wartosci.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

O to mi w sumie chodzilo.Ale jak zrobic abym mogl si eodwolywac poprzez ten operator do poszczegolnych eleemtow tablicy. Np wprowadzam tab(2,1) i automatycznie odwoluje sie do tab[2][1], zeby np go zmienic albo poporstu wproadzic. I czy jak przeladuje ten operator to bede mogl go uzywac np w przeladowanich innych operatorow.Chodzi mi o to czy zamisat np w operatorze dodawania tab[1][1]*macierz.tab[1][2] zrobic tab(1,1)+macierz.tab(1,2). O takie cos mi chodzi.

A oto kod mojego niedokonczonego programu:

#include <iostream.h>class macierz{	int tab[3][3];	//static ileMacierzy;public:	macierz operator+(macierz &);	macierz operator-(macierz &);	macierz operator*(macierz &);	int operator&();	macierz() {}	macierz(int);	~macierz() {}	void wyswietl(){	cout<<"Macierz: "<<endl<<endl;	cout<<" | "<<tab[0][0]<<"; "<<tab[0][1]<<"; "<<tab[0][2]<<" | "<<endl<<" | "<<tab[1][0]<<"; "<<tab[1][1]<<"; "<<tab[1][2]<<" | "<<endl<<" | "<<tab[2][0]<<"; "<<tab[2][1]<<"; "<<tab[2][2]<<"|"<<endl;	}macierz odwr(){macierz b;tab[0][0]=-1*tab[0][0];return b;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) {	cout << "Tworzymy macierz: " << endl;	int n;	for(i =0;i<3;i++) {		for(int j=0;j<3;j++) { 			cout << "Podaj [" << i << "][" << j << "] ";			cin >> n;			tab[i][j]=n;			if (j==2 && i == 2)				 break;		}	}}// prezladowanie operatoramacierz macierz::operator +(macierz &dodaj) {	macierz tym;	tym.tab[0][0] = dodaj.tab[0][0] + tab[0][0];	tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1];	tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2];	tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0];	tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1];	tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2];	tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0];	tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1];	tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2];	return tym;}macierz macierz::operator -(macierz &odejmij) {	macierz tym;	tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0];	tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1];	tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2];	tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0];	tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1];	tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2];	tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0];	tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1];	tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2];	return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){	int tym;	tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0];		return tym;}void main(void){	macierz tab1(1),tab2(1),tab3,b;	int a;	tab1.wyswietl();	tab2.wyswietl();	tab3=tab1+tab2;	a=&tab1;		cout<<"Wyznacznik  "<<a<<endl;	tab3.wyswietl();	tab1.wyswietl();	tab3=tab1*tab2;	tab3.wyswietl();	;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale jak zrobic abym mogl si eodwolywac poprzez ten operator do poszczegolnych eleemtow tablicy. Np wprowadzam tab(2,1) i automatycznie odwoluje sie do tab[2][1], zeby np go zmienic albo poporstu wproadzic.

Jak zwrocisz w tym przeladowaniu referencje to bedziesz mogl modyfikowac wartosc poprzez tab(2,1) = 13

I czy jak przeladuje ten operator to bede mogl go uzywac np w przeladowanich innych operatorow.Chodzi mi o to czy zamisat np w operatorze dodawania tab[1][1]*macierz.tab[1][2] zrobic tab(1,1)+macierz.tab(1,2).

Jak najbardziej.

 

Co do kodu.. slyszales kiedys o petlach? Bo te funkcje do operacji na macierzy to sa tak napisane, ze lepiej tego nikomu nie pokazuj.

Edytowane przez FiDO

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrobilem te dodawani w funkcji ale cos jest nie tak. Nie mam pojecia dlaczego mi pisze ze nie zadeklarowalem zmiennej j. I wogole nie dziala te dodawania.Tzn w programie nic sie ni ewyswietla.

macierz macierz::operator+(macierz &dodaj){	macierz tym;	for(int i=0;i<3;j++){		for(int j=0;j<3;j++){			tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j];			//if(j==2&&i==2)			//	break;}}return tym;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A moglbym prosic o przyklad tego przeladowani z referencja??

Pozdrawiam

Jasne:

#include <iostream>using namespace std;class Test{	int tab[3][3];public:	Test() 	{		for (int i = 0; i < 3; i++)		{			for (int j = 0; j < 3; j++)			{				tab[i][j] = 0;			}		}	}	int& operator() (int i, int j)	{		if (i > 2 || j > 2)		{			throw (char*)"Zly indeks";		}		return this->tab[i][j];	}	void operator() ()	{		for (int i = 0; i < 3; i++)		{			for (int j = 0;j < 3;j++ )			{				cout << "["<< i << "," << j << "] = " << this->operator() (i, j) << endl;			}		}	}};int main(){	Test test;	cout << "test\n";	try	{		test(0, 0) = 1;		test(2, 2) = 3;		test(1, 1) = 10;				test(3, 3) = 99;	}	catch (char * str)	{		cout << "Nastapil wyjatek: " << str << endl;	}	test();	return 0;}

Zrobilem te dodawani w funkcji ale cos jest nie tak. Nie mam pojecia dlaczego mi pisze ze nie zadeklarowalem zmiennej j. I wogole nie dziala te dodawania.Tzn w programie nic sie ni ewyswietla.

Konkretny komunikat bledu podaj.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

error C2065: 'j' : undeclared identifier - taki jest komunikat.

A dziwne bo w miejscu wywolania tego dodawania program sie zawiesza. Czy cos jest z tym dodawaniem nie tak bo jak n amje oko to powinna byc dobrze. Tzn program sie odpala jak zadeklaruje zmienna int j; w tym dodawaniu ale juz naprawde nie wiem jak to zoribc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To jest ta wersja z gdzie poajwia si eblad przy zmiennej j

#include <iostream.h>#include<iomanip>#include<string.h>using namespace std;class macierz{	int tab[3][3];	//static ileMacierzy;public:	macierz operator+(macierz &);	macierz operator-(macierz &);	macierz operator*(macierz &);	macierz operator|(macierz &);	int &operator()(int i,int j);	int operator&();	void trojkat();	macierz() {}	macierz(int);	~macierz() {}	void wyswietl(char _co[20]){	char co[20];	strcpy(co,_co);	cout<<co<<endl;	for(int i=0;i<3;i++,cout<<endl)   for(int j=0;j<3;j++)	   cout<<tab[i][j]<<";";	cout<<endl;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) {	cout << "Tworzymy "<<i<<" macierz: " << endl;	int n;	for(i =0;i<3;i++) {		for(int j=0;j<3;j++) { 			cout << "Podaj [" << i << "][" << j << "] ";			cin >> n;			tab[i][j]=n;			if (j==2 && i == 2)				 break;		}	}}macierz macierz::operator+(macierz &dodaj){	macierz tym;	for(int i=0;i<3;j++){		for(int j=0;j<3;j++){			tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j];			if(j==2&&i==2)				break;}}return tym;}// prezladowanie operatora/*macierz macierz::operator +(macierz &dodaj) {	macierz tym;	tym.tab[0][0] = dodaj.tab[0][0] + tab[0][0];	tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1];	tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2];	tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0];	tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1];	tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2];	tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0];	tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1];	tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2];	return tym;}*/macierz macierz::operator -(macierz &odejmij) {	macierz tym;	tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0];	tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1];	tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2];	tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0];	tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1];	tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2];	tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0];	tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1];	tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2];	return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){	int tym;	tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0];		return tym;}int& macierz::operator()(int i,int j){	return this->tab[i][j];}void main(void){	macierz tab1(1),tab2(2),tab3,b;	int a,c;	tab1.wyswietl("Macierz");	tab2.wyswietl("Macierz");	tab3=tab1+tab2;	a=&tab1;		cout<<"Wyznacznik  "<<a<<endl;	tab3.wyswietl("Suma");	tab1.wyswietl("Macierz");	tab3=tab1*tab2;	tab3.wyswietl("Iloczyn");	c=tab1(0,0)+tab2(1,1);	cout<<c;		}
A to jest wersja taka jak chcialbym zeby chodzilo tylko ze dla wszsytkich nawiasow kawdratowych zeby je zastapic przeladowanym operatorem. w tym kodzie tylko w jednym miejscu to zrobilm i wyskakuje blad.

#include <iostream.h>#include<iomanip>#include<string.h>using namespace std;class macierz{	int tab[3][3];	//static ileMacierzy;public:	macierz operator+(macierz &);	macierz operator-(macierz &);	macierz operator*(macierz &);	macierz operator|(macierz &);	int &operator()(int i,int j);	int operator&();	void trojkat();	macierz() {}	macierz(int);	~macierz() {}	void wyswietl(char _co[20]){	char co[20];	strcpy(co,_co);	cout<<co<<endl;	for(int i=0;i<3;i++,cout<<endl)   for(int j=0;j<3;j++)	   cout<<tab[i][j]<<";";	cout<<endl;}};//macierz.ileMacierzy = 0;// kostruktormacierz::macierz(int i) {	cout << "Tworzymy "<<i<<" macierz: " << endl;	int n;	for(i =0;i<3;i++) {		for(int j=0;j<3;j++) { 			cout << "Podaj [" << i << "][" << j << "] ";			cin >> n;			tab[i][j]=n;			if (j==2 && i == 2)				 break;		}	}}macierz macierz::operator+(macierz &dodaj){	macierz tym;	for(int i=0;i<3;j++){		for(int j=0;j<3;j++){			tym.tab[i][j]=dodaj.tab[i][j]+tab[i][j];			if(j==2&&i==2)				break;}}return tym;}// prezladowanie operatora/*macierz macierz::operator +(macierz &dodaj) {	macierz tym;	tym.tab(0,0) = dodaj.tab(0,0) + tab(0,0);//tak wlasnie chialbym aby to wszsytko dzialalo	tym.tab[0][1] = dodaj.tab[0][1] + tab[0][1];	tym.tab[0][2] = dodaj.tab[0][2] + tab[0][2];	tym.tab[1][0] = dodaj.tab[1][0] + tab[1][0];	tym.tab[1][1] = dodaj.tab[1][1] + tab[1][1];	tym.tab[1][2] = dodaj.tab[1][2] + tab[1][2];	tym.tab[2][0] = dodaj.tab[2][0] + tab[2][0];	tym.tab[2][1] = dodaj.tab[2][1] + tab[2][1];	tym.tab[2][2] = dodaj.tab[2][2] + tab[2][2];	return tym;}*/macierz macierz::operator -(macierz &odejmij) {	macierz tym;	tym.tab[0][0] = odejmij.tab[0][0] - tab[0][0];	tym.tab[0][1] = odejmij.tab[0][1] - tab[0][1];	tym.tab[0][2] = odejmij.tab[0][2] - tab[0][2];	tym.tab[1][0] = odejmij.tab[1][0] - tab[1][0];	tym.tab[1][1] = odejmij.tab[1][1] - tab[1][1];	tym.tab[1][2] = odejmij.tab[1][2] - tab[1][2];	tym.tab[2][0] = odejmij.tab[2][0] - tab[2][0];	tym.tab[2][1] = odejmij.tab[2][1] - tab[2][1];	tym.tab[2][2] = odejmij.tab[2][2] - tab[2][2];	return tym;}macierz macierz::operator *(macierz &mnoz){macierz tym;tym.tab[0][0]=mnoz.tab[0][0]*tab[0][0]+mnoz.tab[0][1]*tab[1][0]+mnoz.tab[0][2]*tab[2][0];tym.tab[0][1]=mnoz.tab[0][0]*tab[0][1]+mnoz.tab[0][1]*tab[1][1]+mnoz.tab[0][2]*tab[2][1];tym.tab[0][2]=mnoz.tab[0][0]*tab[0][2]+mnoz.tab[0][1]*tab[1][2]+mnoz.tab[0][2]*tab[2][2];tym.tab[1][0]=mnoz.tab[1][0]*tab[0][0]+mnoz.tab[1][1]*tab[1][0]+mnoz.tab[1][2]*tab[2][0];tym.tab[1][1]=mnoz.tab[1][0]*tab[0][1]+mnoz.tab[1][1]*tab[1][1]+mnoz.tab[1][2]*tab[2][1];tym.tab[1][2]=mnoz.tab[1][0]*tab[0][2]+mnoz.tab[1][1]*tab[1][2]+mnoz.tab[1][2]*tab[2][2];tym.tab[2][0]=mnoz.tab[2][0]*tab[0][0]+mnoz.tab[2][1]*tab[1][0]+mnoz.tab[2][2]*tab[2][0];tym.tab[2][1]=mnoz.tab[2][0]*tab[0][1]+mnoz.tab[2][1]*tab[1][1]+mnoz.tab[2][2]*tab[2][1];tym.tab[2][2]=mnoz.tab[2][0]*tab[0][2]+mnoz.tab[2][1]*tab[1][2]+mnoz.tab[2][2]*tab[2][2];return tym;}int macierz::operator&(){	int tym;	tym=tab[0][0]*tab[1][1]*tab[2][2]-tab[0][0]*tab[1][2]*tab[2][1]-tab[0][1]*tab[1][0]*tab[2][2]+tab[0][1]*tab[1][2]*tab[2][0]+tab[0][2]*tab[1][0]*tab[2][1]-tab[0][2]*tab[1][1]*tab[2][0];		return tym;}int& macierz::operator()(int i,int j){	return this->tab[i][j];}void main(void){	macierz tab1(1),tab2(2),tab3,b;	int a,c;	tab1.wyswietl("Macierz");	tab2.wyswietl("Macierz");	tab3=tab1+tab2;	a=&tab1;		cout<<"Wyznacznik  "<<a<<endl;	tab3.wyswietl("Suma");	tab1.wyswietl("Macierz");	tab3=tab1*tab2;	tab3.wyswietl("Iloczyn");	c=tab1(0,0)+tab2(1,1);	cout<<c;		}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ech... trzeba patrzec w ktorej linii jest blad. Odrazu po tym doszedlem, ze w pierwszym for masz j++ zamiast i++ i dlatego Ci rzucalo bledem.

 

Co do reszty to napisze tylko tyle:

macierz macierz::operator+(macierz &dodaj){	macierz tym;	for(int i=0;i<3;i++)	{		for(int j=0;j<3;j++)		{			tym(i, j) = this->operator()(i, j) + dodaj(i, j);		}	}	return tym;}

PS. strasznie bazgrasz w tym kodzie.. nie wszedzie masz wciecia, klamry tez jakos dziwnie umieszczasz (np. w tym operator+ w swojej wersji).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A patrzyles chociaz na ten kod co wkleilem wyzej ? :)

 

Co do poczatku pracy to zadne tlumaczenie. Tez sobie tak kiedys tlumaczylem.. ale jak juz sie zagalopujesz to potem sie nie chce poprawiac. Dlatego warto od razu pisac normalnie, nawet jesli program ma nie przekraczac strony.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zeczywiscie za szybko czytalem i nie zobacyzlem :) ale teraz np jezli nie chialbym za kazym razem pisac this->operator()itd...? To jak to zrobic?

Np niazej mam przeladowany operator & ktory liczy wyznacznik. Jeest tam wzor pisany za pomoca tab[j] a jak to zrobic aby bylo (i,j)???? I to juz bedzie chyba wszystko.

:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zeczywiscie za szybko czytalem i nie zobacyzlem :) ale teraz np jezli nie chialbym za kazym razem pisac this->operator()itd...? To jak to zrobic?

Niestety w przypadku wywolywania przeciazonych operatorow na this trzeba tak. this(i, j) nie przejdzie... Innej opcji nie znam.

 

Np niazej mam przeladowany operator & ktory liczy wyznacznik. Jeest tam wzor pisany za pomoca tab[j] a jak to zrobic aby bylo (i,j)????

I znowu nie masz petli.. wiec zamiana na (i, j) nie poprawi Ci czytelnosci. Pozatym ten "wzor" dla wiekszej macierzy juz nie zadziala. Ale jak koniecznie chcesz no to zamieniasz analogicznie jak ja zrobilem to wyzej (porownaj sobie orginal z tym co napisalem). Edytowane przez FiDO

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ech.. tak to jest jak sie ostatni raz C++ widzialo z 1.5 roku temu :)

 

Pogadalem chwile z kumplem.. powspominalismy stare dobre czasy C++ i wyszlo z tego to, ze this->operator() (i, j) mozna zamienic na znacznie prostsze (*this)(i, j)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...