Struktura opisująca informacje o osobie

0

Witam. Męczę się od kilku godzin z pewną strukturą. Otóż mam napisać strukturę, która będzie modelować informacje o imionach i nazwisku. Ma zawierać konstruktor przyjmujący trzy napisy(dwa zawierające imiona i jeden nazwisko) i metody:

  • IleImion zwracającą 1 lub 2 w zależności od ilości imion,
  • Imie zwracającą napis zawierający pierwsze imię,
  • Imiona zwracającą napis zawierający imiona, lub tylko pierwsze imię, jeżeli nie ma drugiego,
  • Nazwisko zwracającą napis zawierający nazwisko,
  • ImionaINazwisko zwracającą napis zawierający pełne imiona i nazwisko,
  • InicjalyINazwisko zwracającą napis zawierający inicjały (inicjał) i nazwisko.

Ponadto ma przejść testy, które zamieściłem w programie. Jestem zielony w temacie struktur, więc proszę o pomoc. Program nie działa, uruchamia się, ale wywala błędy asserta. Co jest w nim do bani? Oto co udało mi się napisać:

 
#include <iostream>
#include <string>
#include <assert.h>

struct Osoba
{
    std::string imie;
    std::string drugie_imie;
    std::string nazwisko;

    int IleImion()  //metoda IleImion
      {
          if( drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
              return 2;

          else
              return 1;
      }


    std::string Imie()  //metoda Imie
    {
        return imie;
    }

    std::string Imiona() //metoda Imiona
    {
        if(drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
            return imie + " " + drugie_imie;

        else
            return imie;
    }

    std::string Nazwisko()  //metoda Nazwisko
    {
         return nazwisko;
    }

    std::string ImionaINazwisko()   //metoda ImionaINazwisko
    {
        if(drugie_imie[1] >= 'A' && drugie_imie[1] <= 'Z')
          return imie + " " + drugie_imie + " " + nazwisko;

        else
          return imie + " " + nazwisko;
    }



    Osoba(std::string imie, std::string drugie_imie, std::string nazwisko);        



};

Osoba::Osoba(std::string imie, std::string drugie_imie, std::string nazwisko) {}


void test_Osoba(void)
  {
  Osoba jkw("Piotr", "Andrzej", "Golota");
   assert(jkw.IleImion()==2);
   assert(jkw.Imie()=="Piotr");
   assert(jkw.Imiona()=="Piotr Andrzej");
   assert(jkw.Nazwisko()== "Golota");
   assert(jkw.ImionaINazwisko()=="Piotr Andrzej Golota");

 const Osoba aa("Ilona", "", "Rzeznik");
  assert(aa.IleImion()==1);
  assert(aa.Imie()=="Ilona");
  assert(aa.Imiona()=="Rzeznik");
  assert(aa.Nazwisko()=="Rzeznik");
  assert(aa.ImionaINazwisko()=="Ilona Rzeznik");
  }

int main(void)
{
    test_Osoba();

    return 0;
}
0

Osoba osoba =
{
"aaa",
"bbb",
"ccc"
};

0

in C++98 'Osoba' must be initialized by constructor, not by '{...}'|

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