Jak nadać obiektowi wartość ?

Jak nadać obiektowi wartość ?
bartek11223345
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0
Kopiuj
#include <bits/stdc++.h>
using namespace std;

class Klasa {
public:
	int A;
	int Wypisz() {
		return A;
	}
};

int main() {
	Klasa K;
	K.A = 123;
	cout<<K.Wypisz()<<endl;
}
Kopiuj
#include <bits/stdc++.h>
using namespace std;

class Klasa {
public:
	int A;
};

int main() {
	Klasa K;
	K.A = 123;
	cout<<K<<endl;
}

Chciałbym, żeby drugi program działał tak samo jak pierwszy, czyli wypisywał zmienną A, lecz chcę móc ją wypisać jedynie odwołując się do nazwy obiektu tj. używając jedynie

Kopiuj
 cout<<K<<endl; 

Jak to zrobić ?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
3

Musisz przeładować std::ostream& operator<<(std::ostream&, Klasa const&).

Przy okazji, #include <bits/stdc++.h> jest nieprzenośne, lepiej użyj #include <iostream>

bartek11223345
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0
Kopiuj
#include <bits/stdc++.h>
using namespace std;
 
class Klasa {
public:
    int A;
};
 
int main() {
    Klasa K;
    K.A = 123;
    int X = K;
    cout<<X<<endl;
}
 

Co trzeba zrobić, żeby ten program również wypisał zmienną 'A', albo raczej co trzeba zrobić, żeby samo odwołanie się do obiektu zwróciło tą zmienną ?

dampe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: SK
1

Musisz napisać operator konwersji do odpowiedniego typu:

Kopiuj
class Klasa {
	public:
		int A;
	
	operator int() const { return A; }
};
 
int main() {
    Klasa K;
    K.A = 123;
    int X = K;
    cout<<X<<endl;
}
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
1

Chciałbym, żeby drugi program działał tak samo jak pierwszy
Przecież pierwszy się w ogóle nie kompiluje.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.