nline



  • Wenn ich eine Methode einer Klasse als Inline deklarieren will, reicht es da zu, wenn ich sie in der Klasse als inine deklariere oder muss ich auch vor der Funktion inline schreiben?

    bsp:

    class K
    {
    
    inline void foo(...);
    }
    
    [inline] K:foo(...)
    {
    }
    

    Also muss ich das eingeklammerte inline schreiben?



  • probier's doch aus, dein compiler sagt's dir.
    das void darfst du aber nicht weglassen.



  • Das ist es eben ja, der Compiler hat nichts zu beanstanden.

    Jap, dass mit dem void darf man nicht vergessen.



  • in der klasse ists automagisch inline. schreibs dort nicht davor.



  • volkard schrieb:

    in der klasse ists automagisch inline. schreibs dort nicht davor.

    Er hat die Funktion in der Klasse doch nur deklariert. Insofern sollte er hier schon inline mit angeben.

    @Tc++H
    Für (öffentliche) inline-Member gibt es zwei sinnvolle herangehensweisen:
    a) Definition in der Klassendefinition:

    class X {
    public:
      void f() { // implizit inline
          // ...  
      }
    };
    

    b) Inline-Deklaration in der Klassendefinition und Implementation im Header

    class X {
    public:
      inline void f();
    };
    
    // man kann auch inline void X::f() schreiben, aber das inline ist redundant
    void X::f() {
       //...
    }
    


  • Nabend,

    wie schaut das aus, wenn man inline nur bei der Definition ausserhalb der Klasse
    dazuschreibt? Wird es dann ignoriert oder dennoch vom Compiler beachtet?

    gruss
    v R



  • Sollte beides als inline verarbeitet werden.
    Siehe 9.3/3:

    An inline member function (whether static or nonstatic) may also be defined outside of its class definition provided either its declaration in the class definition or its definition outside of the class definition declares the function as inline.


Log in to reply