Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: friend funkcia

Aktivity
Avatar
expoox
Tvůrce
Avatar
expoox:3.4.2016 15:53
class CInventory {

    static vector< int > idA;
    static vector< string > nameA;
    static vector< string > deptA;
    static vector< string > cityA;
    static vector< string > countryA;

  public:
    CInventory();
    ~CInventory();

    bool AddProp( int invID, const string & name, const string & deptName, const string & city, const string & country );   // DONE
    bool DelProp(int invID);    // DONE
    bool Transfer(int invID, const string & deptName, const string & city, const string & country );    // DONE
    CPropList PropList (string & deptName, string & city,string & country);
    int PropCount(string & deptName, string & city, string & country);  // DONE

    friend bool binarySearch(const int & invID, int & mid);
};

bool binarySearch(const int & invID, int & mid){      // DONE
    int lava = 1;
    int prava = idA.size();

    while (lava < prava) {
        mid = ((lava + prava) / 2) + 1;
        if (invID == idA[mid])
            return true;
        else if (invID < idA[mid])
            prava = mid;
        else
            lava = mid;
    }

    return false;
}

ahoj, dostavam na funkciu binarySearch error pri kompilacii, neviete preco nepozna idA ? dakujem

main.cpp: In function ‘bool binarySearch(const int&, int&)’:
main.cpp:47:17: error: ‘idA’ was not declared in this scope
int prava = idA.size();

 
Odpovědět
3.4.2016 15:53
Avatar
expoox
Tvůrce
Avatar
expoox:3.4.2016 16:08

dobre upravil som ten riadok takto

int prava = CInvetory::idA.size();

a uz to error nehadze ale neviem ci je to spravne riesenie, respektive ci je to vobec riesenie

 
Nahoru Odpovědět
3.4.2016 16:08
Avatar
martanec
Člen
Avatar
martanec:5.4.2016 8:46

myslim, ze ti pri metode binarySearch chyba nazov triedy. ktorej metoda patri:

bool CInventory::bi­narySearch(con­st int & invID, int & mid){ // DONE
...
}

 
Nahoru Odpovědět
5.4.2016 8:46
Avatar
expoox
Tvůrce
Avatar
Odpovídá na martanec
expoox:5.4.2016 12:10

no nas prave ucili ze pri friend funkciach deklarovanych v triede sa to nepise

 
Nahoru Odpovědět
5.4.2016 12:10
Avatar
martanec
Člen
Avatar
Odpovídá na expoox
martanec:5.4.2016 13:41

Mas pravdu :) Priznam sa, ze doteraz som friend funkcie este nepouzil. No podla dokumentacie a par prikladoch, co som nasiel, by som povedal, ze tvoja oprava je dobra:

int prava = CInvetory::idA.size();

Pri nie-statickych atributoch triedy, by si potom ako parameter funkcie musel posielat referenciu/smernik na existujuci objekt danej triedy:

bool binarySearch(const CInventory & pInventory, const int & invID, int & mid)

a v tele funkcie by to nasledne vyzeralo takto:

int prava = pInventory.idA.size();

Kazdopadne by bolo fajn, keby mi dal za pravdu este niekto, kto sa s tymto bezne zaobera:)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
5.4.2016 13:41
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.