newyorkas

[C++] nesuveikia kodas

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

 

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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.

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
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;
}

 

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį
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.

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

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ų

×   You cannot paste images directly. Upload or insert images from URL.


  • Å iame puslapyje narÅ¡o:   0 nariai

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

  • eneba
  • eneba
  • eneba



  • SuperGames programele
  • SuperGames programele