Jak nadać obiektowi wartość ?

0
#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;
}
#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

 cout<<K<<endl; 

Jak to zrobić ?

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>

0
#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ą ?

1

Musisz napisać operator konwersji do odpowiedniego typu:

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1