Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: friend funkcia

C a C++ C a C++ friend funkcia

Aktivity (1)
Avatar
expoox
Redaktor
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
Redaktor
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
Redaktor
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í
+1 bodů
Ř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.