Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    211

    [c++] Definire una macro per sostituire gli at

    Per effettuare il debugging, ho utilizzato la funzione at del vector per controllare i limiti:
    vector<int> Arr;
    Arr.at(n)=5;
    ...
    Poi volevo sostituire tutti gli at con una macro di questo tipo:
    #define .at(n) [n]
    Ma non va,forse perchè la macro non puo' iniziare con il punto. Avreste qualche idea?

  2. #2
    Non credo proprio si possa fare, per due motivi:
    • intanto non mi risulta che i nomi delle macro possano iniziare con il . ;
    • in secondo luogo, il precompilatore effettua la sostituzione della macro solamente se il testo della macro è staccato da altri nomi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    211
    Ok.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    211
    Ho trovato il modo:si crea una classe che derivi da vector e si implementano le operazioni []. All'interno del codice si sostituiscono i [] con gli at.

    template <class T> class Vecublic Vector<T>
    {
    ...

    T operator[] (int a)
    {
    return at(a);
    }

    Si puo' aggiungere poi un bool che indica se fare o meno il controllo:

    bool Controllo

    T operator[](int a)
    {
    if (Controllo) return at(a);
    else...

    }

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 © 2025 vBulletin Solutions, Inc. All rights reserved.