Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Getter zwracający dwa typy danych.

Ostatnio zmodyfikowano 2020-11-30 23:15
Autor Wiadomość
Tołdi2426
Temat założony przez niniejszego użytkownika
Getter zwracający dwa typy danych.
» 2020-11-30 22:16:01
C/C++
#include <iostream>
using namespace std;
class Wartosc
{
private:
   
int wartosc;
   
bool typ;
public:
   
Wartosc( int );
   
Wartosc( char );
   
int Setter( int );
   
char Setter( char );
   
int Getter();
};

Wartosc::Wartosc( int nowa )
{
   
typ = false; // konwersja na char w getterz
   
Setter( nowa );
}

Wartosc::Wartosc( char nowa )
{
   
typ = true; // konwersja na int w setterze
   
Setter( nowa );
}

int Wartosc::Setter( int nowa )
{
   
wartosc = nowa;
}

char Wartosc::Setter( char nowa )
{
   
wartosc =( int ) nowa;
}

int Wartosc::Getter()
{
   
if( typ == true ) // wypisanie inta z chara
   
{
       
return wartosc;
   
}
   
if( typ == false ) // wypisanie chara z inta
   
{
       
return( char ) wartosc;
   
}
}

int main()
{
   
Wartosc obiekt( 103 ), obiekt1( 'e' );
   
cout << obiekt.Getter() << endl;
   
cout << obiekt1.Getter();
   
   
return 0;
}

Chodzi o to żeby getter o typie int mógł zwrócić wartość char jeśli zmienna typ zostanie w konstruktorze ustawiona na false.
Jeżeli podany zostanie znak, to zostanie przekonwertowany na int w setterze, a jeżeli podana zostanie liczba to powinna zostać przekonwertowana na znak ascii w getterze.
Czy jest to możliwe, a jeśli nie to w jaki sposób można to inaczej rozwiązać?
P-177767
DejaVu
» 2020-11-30 22:47:09
Proponuję, abyś opisał lepiej co chcesz osiągnąć. Jeżeli chodzi Ci tylko i wyłącznie o wypisywanie wartości, to obiekt.Getter() może zwracać std::string/std::wstring, który będzie ustawiany np. w konstruktorze klasy Wartosc.
P-177768
pekfos
» 2020-11-30 22:51:41
P-177769
Tołdi2426
Temat założony przez niniejszego użytkownika
» 2020-11-30 22:53:16
Tak, chodzi mi tylko o wypisanie wartości. A z przeładowaniem tego Gettera to by było możliwe?
P-177770
pekfos
» 2020-11-30 23:06:10
To może napisz własny operator << który by wykrywał jakiego typu jest wartość i wypisywał ją w stosowny sposób? Wtedy
C/C++
cout << obiekt << endl << obiekt1;
Czy koniecznie ma być getter? Jeśli tak, to najlepiej zwracać tekst, a nie dwa różne możliwe typy.
P-177771
Tołdi2426
Temat założony przez niniejszego użytkownika
» 2020-11-30 23:15:15
Tak, mam użyć gettera w zależności od pola typ, ale zrobię normalnie ze stringiem i trudno. Dzięki za pomoc.
P-177772
« 1 »
  Strona 1 z 1