Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475

    [C++] il compilatore non trova std::sort

    Il titolo è già discretamente chiaro, comunque su questa riga:

    codice:
    std::sort(Components.begin(), Components.end(), Sort);
    (Dove sort è una struct che contiene la funzione per comparare gli oggetti) mi viene questo errore:

    codice:
    error: expected primary-expression before ‘)’ token
    All'inizio del file mi sono ricordato di aggiungere "using namespace std".

    Gli include sono:

    codice:
    #include <SDL/SDL.h>
    #include <SDL/SDL_mixer.h>
    
    #include <stdlib.h>
    #include <stdio.h>
    
    #include <vector>
    #include <algorithm>
    Non riesco a capire quale sia il problema... :master:
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Facci vedere la struct ... chiarisci come hai dichiarato quello che passi come parametri ... (Components, Sort ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Components è questo vector:

    codice:
    vector<GameComponent*> Components;
    codice:
    class GameComponent : public OrderedObj
    {
        public:
    
        virtual void LoadContent() = 0;
        virtual void Initialize() = 0;
        virtual void Update() = 0;
        virtual void UnloadContent() = 0;
    };
    
    class OrderedObj
    {
        public:
    
        int Order;
    
        struct Sort
        {
            bool operator()(OrderedObj* &ob1, OrderedObj* &ob2)
            {
                return ob1->Order < ob2->Order;
            }
        };
    };
    Ho modificato la riga dove uso sort perchè ho spostato la struct all'interno della classe, e ho aggiunto i due punti, così:

    codice:
    std::sort(Components.begin(), Components.end(), OrderedObj::Sort);
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La std::sort si aspetta un oggetto, non il nome della struttura.
    codice:
    // modo 1
    
    OrderedObj::Sort s;
    std::sort(Components.begin(), Components.end(), s);
    
    // modo 2
    std::sort(Components.begin(), Components.end(), OrderedObj::Sort());
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.