come posso convertire la mia classe in un namespace

ho una classe in c + + che voglio convertire in un namespace ho cercato di guardarsi intorno in google, ma non riuscivo a trovare alcuna soluzione che renderà la mia classe un namespace. come faccio a farlo? è una classe che contiene 3 funzioni. per esempio:

class c
{
public:
    void A();
    void B();
    void X();
}

voglio essere in grado di utilizzare queste funzioni senza creare un nuovo oggetto della classe, voglio essere uno spazio dei nomi. la classe C che ha le funzioni a (), b (), x (), si trasformerà in uno spazio dei nomi. PS, ho Clion 2017 ty

EN From: how can i convert my class into a namespace

More similar articles:

18 Comments

    1. @YoavLinder È inoltre necessario utilizzare la stessa sintassi (utilizzando l’operatore “scope resolution”, ::) come quando si accede alle cose nel std namespace – c::A();, e così via.

    2. @YoavLinder Hai provato a compilarlo. il vostro IDE è * * non * il compilatore, solo perché colora il codice in un certo modo non significa necessariamente che il compilatore non lo accetterà.

    3. @YoavLinder Questo è un problema completamente estraneo. significa che il compilatore non riesce a trovare quel file. potrebbe essere necessario controllare le impostazioni nel vostro IDE.

    4. questo cambiamento non funziona perché le funzioni dei membri non erano originariamente static. senza prove al contrario si deve assumere this è significativo. il significato o l’utilizzo di tali funzioni devono essere modificati in modo significativo affinché questo cambiamento sia applicabile.

    5. @FrançoisAndrieux Questo dipende dal fatto che questi oggetti hanno uno stato (e se c’è più di uno). oggetti apolidi (“quasiobjects?”) sono ragionevolmente comuni, in particolare fra coloro che ha imparato una punta piccola circa OOP e niente circa qualche altra cosa, o ha avuto un insegnante object-obsessed.

  1. si consiglia di utilizzare le funzioni statiche

    class MyClass
    {
    public:
        static void A();
    }

    allora potete denominare quelle funzioni come questo:

    MyClass::A();
  2. probabilmente volete qualcosa di simile:

    foo.cpp

    #include "bar.h"
    
    int main()
    {
      bar::A();
      bar::B();
    }

    bar.h

    namespace bar
    {
      void A();
      void B();
    }

    bar.cpp

    #include "bar.h"
    
    namespace bar
    {
      void A()
      {
        ...
      }
    
      void B()
      {
         ..
      }
    }

    questo è un esempio minimo senza protezioni di intestazione per brevità.

  3. se si desidera utilizzare le funzioni A, B e C senza un’istanza della classe c, l’implementazione di queste funzioni potenzialmente deve cambiare in modo significativo. e ‘un po’ difficile dirvi cosa fare perché dipende da come queste funzioni sono attuate.

Leave a Reply

Your email address will not be published. Required fields are marked *