Členská funkcia, ktorá vracia obekt. – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Členská funkcia, ktorá vracia obekt. – C / C++ – Fórum – Programujte.comČlenská funkcia, ktorá vracia obekt. – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
me.name0
Návštěvník
4. 7. 2013   #1
-
0
-

class time {                        // trieda time
      private:
              int hodiny;
              int minuty;
      public:
             time(int h = 0, int m = 0);    // konstruktor
             void addminuty(int);            //nepoctatná funkcia
             void addhodiny(int);            //nepoctatná funkcia
             time sum(const time&) const;    // TATO FUMKCIA BY MALA NAVRACAT OJEKT TYPU TIME!!!
             void show() const;             //nepoctatná funkcia
             };

time time::sum(const time& t) const         // MALA BY VRÁTIŤ OBJEKT TYPU TIME
{
     time temp = time();
     temp.hodiny = hodiny + t.hodiny;
     temp.minuty = minuty + t.minuty;
     temp.hodiny += temp.minuty/60;
     temp.minuty %= 60;
     return temp;
     }

kompilátor vypisuje chybu: "`time' does not name a type"

keď zmením funkciu tak, aby navracala napr. int tak všetko ide (až na to že je mi takáto nanič : )

už fakt neviem kde môže byť problém...

Nahlásit jako SPAM
IP: 213.151.236.–
Reklama
Reklama
Sefiros0
Návštěvník
4. 7. 2013   #2
-
0
-

Prásácky vyřešeno ale de to takto...

class time
{                        // trieda time
      private:
              int hodiny;
              int minuty;
      public:
             time(int h = 0, int m = 0) : hodiny(h), minuty(m) {};    // konstruktor
             void addminuty(int);            //nepoctatná funkcia
             void addhodiny(int);            //nepoctatná funkcia
             auto sum(const time&) const -> time;    // TATO FUMKCIA BY MALA NAVRACAT OJEKT TYPU TIME!!!
             void show() const;             //nepoctatná funkcia
};

auto time::sum(const time& t) const -> time         // MALA BY VRÁTIŤ OBJEKT TYPU TIME
{
     time temp;
     temp.hodiny = hodiny + t.hodiny;
     temp.minuty = minuty + t.minuty;
     temp.hodiny += temp.minuty/60;
     temp.minuty %= 60;
     return temp;
}
Nahlásit jako SPAM
IP: 80.188.252.–
me.name
~ Anonymní uživatel
66 příspěvků
4. 7. 2013   #3
-
0
-

#2 SefirosKompilátor sa  stále sťažuje:

  • ISO C++ forbids declaration of `sum' with no type
  •  

Nahlásit jako SPAM
IP: 213.151.236.–
Sefiros0
Návštěvník
4. 7. 2013   #4
-
0
-

Jo už to mám ... kolize jmen ... přejmenuj to na Time

Nahlásit jako SPAM
IP: 80.188.252.–
me.name
~ Anonymní uživatel
66 příspěvků
4. 7. 2013   #5
-
0
-

#2 Sefiros

  1. storage class specified for field `sum'
  2.  expected `;' before '->' token
  3.  expected init-declarator before '->' token
  4.  expected `,' or `;' before '->' token

Nahlásit jako SPAM
IP: 213.151.236.–
Sefiros0
Návštěvník
4. 7. 2013   #6
-
0
-

BTW používej C++11 kompilátor ... pak by to první řešení mělo fungovat

Nahlásit jako SPAM
IP: 80.188.252.–
me.name
~ Anonymní uživatel
66 příspěvků
4. 7. 2013   #7
-
0
-

#6 Sefiros
Poraď mi nejaký

Nahlásit jako SPAM
IP: 213.151.236.–
Sefiros0
Návštěvník
4. 7. 2013   #8
-
0
-

code::blocks

Nahlásit jako SPAM
IP: 80.188.252.–
Sefiros0
Návštěvník
4. 7. 2013   #9
-
0
-

Další řešení problému je vložit celou třídu + metody do jmenýho prostoru ... pak taky nevznikne konflikt jmen

Nahlásit jako SPAM
IP: 80.188.252.–
me.name
~ Anonymní uživatel
66 příspěvků
5. 7. 2013   #10
-
0
-

#9 Sefiros
čo je tam vlastne zle v knihe je to napísané presne ako som to mal!

Nahlásit jako SPAM
IP: 213.151.236.–
Řešení
Sefiros0
Návštěvník
5. 7. 2013   #11
-
0
-
Vyřešeno Nejlepší odpověď

nic tam není špatně ... prostě nastal konflikt jména třídy s něčím jiným stejně pojmenovaným.

namespace chr
{
class Time
{                        // trieda Time
      private:
              int hodiny;
              int minuty;
      public:
             Time(int h = 0, int m = 0) : hodiny(h), minuty(m) {};    // konstruktor
             void addminuty(int);            //nepoctatná funkcia
             void addhodiny(int);            //nepoctatná funkcia
             Time sum(const Time&) const;    // TATO FUMKCIA BY MALA NAVRACAT OJEKT TYPU Time!!!
             void show() const;             //nepoctatná funkcia
};

Time Time::sum(const Time& t) const          // MALA BY VRÁTIŤ OBJEKT TYPU Time
{
     Time temp;
     temp.hodiny = hodiny + t.hodiny;
     temp.minuty = minuty + t.minuty;
     temp.hodiny += temp.minuty/60;
     temp.minuty %= 60;
     return temp;
}
}

Místo time je tam Time takže i kdybys odstranil ten jmenej prostor, mělo by to jít

Nahlásit jako SPAM
IP: 80.188.252.–
me.name0
Návštěvník
5. 7. 2013   #12
-
0
-

#11 Sefiros
To by mna ani nenapadlo :) diki. 

Nahlásit jako SPAM
IP: 213.151.236.–
KIIV+42
God of flame
5. 7. 2013   #13
-
0
-

no pracujes s casem.. mozna pouzivas  ctime / time.h  -  a tam existuje jista funkce  time_t time (time_t* timer);  takze to pravdepodobne koliduje zrovna s tim

Nahlásit jako SPAM
IP: 86.49.86.–
Program vždy dělá to co naprogramujete, ne to co chcete...
me.name
~ Anonymní uživatel
66 příspěvků
5. 7. 2013   #14
-
0
-

#13 KIIV
No asi ano ...Dosť ma tiež mýlilo toto : "time' does not name a type" myslel som že je problém niekde inde...

Nahlásit jako SPAM
IP: 213.151.236.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 39 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý