Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Erori ciudate de compilare  (Citit de 2320 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
chibicitiberiu
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 49



Vezi Profilul
« : Noiembrie 22, 2009, 16:46:51 »

Am trimis problema verificata si compilata cu gcc pe linux si a mers perfect. Pe compilatorul asta am primit:

Cod:
Eroare de compilare: user.cpp: In function 'void vote(point)':
user.cpp:50: error: reference to 'count' is ambiguous
user.cpp:34: error: candidates are: int count
/usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&)
user.cpp:50: error: reference to 'count' is ambiguous
user.cpp:34: error: candidates are: int count
/usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&)
user.cpp:51: error: reference to 'count' is ambiguous
user.cpp:34: error: candidates are: int count
/usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&)
user.cpp:51: error: expected primary-expression before '*' token
user.cpp:51: error: expected primary-expression before ')' token
user.cpp:51: error: expected `;' before 'bsearch'
user.cpp:54: error: reference to 'count' is ambiguous
user.cpp:34: error: candidates are: int count
/usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&)
user.cpp:54: error: reference to 'count' is ambiguous
user.cpp:34: error: candidates are: int count
/usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:54: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:54: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp: In function 'int sondaj(point)': user.cpp:65: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:65: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:66: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:66: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:67: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:67: error: expected primary-expression before '*' token user.cpp:67: error: expected primary-expression before ')' token user.cpp:67: error: expected `;' before 'bsearch' user.cpp:73: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&) user.cpp:73: error: reference to 'count' is ambiguous user.cpp:34: error: candidates are: int count /usr/include/c++/4.2/bits/stl_algo.h:424: error: template<class _InputIterator, class _Tp> typename std::iterator_traits::difference_type std::count(_InputIterator, _InputIterator, const _Tp&)
(nu mai am timp sa dau enter la toate liniile)
Ce am gresit?

Sursa:
Cod:
#define _input "votare.in"
#define _output "votare.out"

#include <fstream>
#include <stdlib.h>

using namespace std;

class point
{
    public:
     int x, y;
     bool la_vot;

     int operator % (point a)
     {
         int dist;
         dist = (x-a.x)*(x-a.x)+(y-a.y)*(y-a.y);
         return dist;
     };

     bool operator == (point a)
     {
         if (x == a.x && y == a.y) return true;
         return false;
     };
     point() { x = 0; y = 0;};
     point(int a, int b) { x = a; y = b;};
     point(int a, int b, bool c) {x = a; y = b; la_vot = c;};

};

point vot[100000];
int count;


int cmp_pos (const void *a, const void *b)
{
    point c, d;
    c = *(point *)a;
    d = *(point *)b;
    if (c.x == d.x) return c.y - d.y;
    else return c.x - d.x;
}


void vote(point pos)
{
    point *a;
    qsort((void *)vot, count, sizeof(point), cmp_pos);
    a = (point *)bsearch(&pos, (void *)vot, count, sizeof(point), cmp_pos);

    if (a == NULL ) {
        vot[count] = pos; count++;
        }

}


int sondaj (point pos)
{
    int min = 99999, value;
    point *a;

    if (count <= 1) return -1;
    qsort((void *)vot, count, sizeof(point), cmp_pos);
    a = (point *) bsearch(&pos, (void *)vot, count, sizeof(point), cmp_pos);

    if (a != NULL) {
        if (a->la_vot) return -1;
    }

    for (int i = 0; i < count; i++)
    {
        value = pos % vot[i];
        if (value < min) min = value;

    }

    return min;
}


int main()
{
    int n; int action;
    point pos;

    ifstream PNL (_input); PNL>>n;
    ofstream PSD (_output);

    for (int PCR = 0; PCR < n; PCR++)
    {
        PNL>>action>>pos.x>>pos.y;

        if (action == 0) {
            pos.la_vot = false; vote (pos); }
        else if (action == 1) {
            pos.la_vot = true; vote (pos); }

        else if (action == 2) PSD<<sondaj (pos)<<'\n';
    }

    PNL.close();
    PSD.close();
    return 0;
}
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #1 : Noiembrie 22, 2009, 16:58:16 »

Infoarena foloseste compilatorul GCC versiunea 4.2 pe care iti da respectiva eroare. "count" e deja definit in <algorithm> si nu stie sa-si dea seama la care dintre ele te referi aparent. Inlocuieste count cu altceva si ar trebui sa mearga.
Memorat
chibicitiberiu
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 49



Vezi Profilul
« Răspunde #2 : Noiembrie 22, 2009, 17:05:22 »

Infoarena foloseste compilatorul GCC versiunea 4.2 pe care iti da respectiva eroare. "count" e deja definit in <algorithm> si nu stie sa-si dea seama la care dintre ele te referi aparent. Inlocuieste count cu altceva si ar trebui sa mearga.
Merci, asta era problema deci...   Brick wall Thumb up
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines