Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[C++] nesuveikia kodas


newyorkas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1760 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Darau namų darbus, kaip ir viską pasidariau, bandau compiliuoti - meta klaidą. kodėl taip galėtų būt?

 

Klaida yra return p;

if(rado == true)
{
	return p;
}

Klaida:

C:\Users\Kompiuteris\Desktop\namudarbasprog\biblioteka.h|153|error: cannot convert 'Partneriai*' to 'Laukai<Partneriai>*' in return|
C:\Users\Kompiuteris\Desktop\namudarbasprog\main.cpp||In function 'int main()':|

Visa klasė:

class pilnaKlase: public Laukai<Partneriai>
{
private:
    fstream f;
    Partneriai *p;
public:
    pilnaKlase(){}
    Laukai *ieskotiImones(string pav, string drk_pav)
    {
        p = first;
        bool rado;
        while(p!= NULL)
        {
            if(p->getPavadinimas() == pav && p->getPavarde() == drk_pav)
            {
                rado = true;
                break;
            }
            p = p->other;
        }
        if(rado == true)
        {
            return p;
        }
        return 0;
    }
};

 

Nuoroda į komentarą
Dalintis per kitą puslapį

Laukų liste (class) negalima kviest return p; Nes čia tas pats kas int funkcijoj returnint double.

        while(p!= NULL)
        {
            if(p->getPavadinimas() == pav && p->getPavarde() == drk_pav)
            {
                return p;
                break;
            }
            p = p->other;
        }

Ir apskritai, nebūtinas if'as, nes galima taip returnint.

Redaguota , nario mariusqw
Nuoroda į komentarą
Dalintis per kitą puslapį

1 minute prieš, mariusqw parašė:

Laukų liste (class) negalima kviest return p; Nes čia tas pats kas int funkcijoj returnint double.

o tai kokių išvedimo būdų dar yra?:D Be šito dalyko neveikia kitos funkcijos.

Nuoroda į komentarą
Dalintis per kitą puslapį

Kaip supratau, Partneriai yra linked-list'as, kurį sudaro atskiros įmonės. Tokiu atveju tą struktūrą/klasę (Partneriai) būtų logiškiau pavadinti Partneris, nes pointer'is į vienetą nenurodo viso sąrašo.

Dėl pačios programos, tai:

  • Negalima return'inti skirtingų tipų duomenų (šiuo atveju bandai return'inti pointer'į į Partneriai, kai reikalaujama pointer'io į Laukai). Pas tave šitą problemą galima išspręst tiesiog pakeičiant funkcijos grąžinimo tipą į Partneriai*, kadangi tu grąžini vieną įmonę, o ne jų sąrašą.
  • Jeigu neketini keisti std::string'o, parametruose jį apskelbk kaip const reference, nes jis yra (galimai) brangus kopijuoti.
  • if'as nereikalingas - tiesiog, kai randi atitinkamą narį, grąžink pointer'į.
class pilnaKlase : public Laukai<Partneriai> {
    public:
        pilnaKlase() = default;
        
        Partneriai* ieskotiImones( const std::string& pav, const std::string& drk_pav ) {
            p = first;
            
            while ( nullptr != p ) {
                if ( pav == p->getPavadinimas() && drk_pav == p->getPavarde() ) {
                    return p;
                }
                
                p = p->other;
            }
            
            return nullptr;
        }
    
    private:
        std::fstream    f;
        Partneriai*     p;
}

 

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 3 savaičių...
2019-06-06 22:51, mariusqw parašė:

Laukų liste (class) negalima kviest return p; Nes čia tas pats kas int funkcijoj returnint double.


        while(p!= NULL)
        {
            if(p->getPavadinimas() == pav && p->getPavarde() == drk_pav)
            {
                return p;
                break;
            }
            p = p->other;
        }

Ir apskritai, nebūtinas if'as, nes galima taip returnint.

Ne ne tas pats. double gali but implicit converted i int su siokiu tokiu datos praradimu. o jo tipas negali nes nera polymorphinis.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1760 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...