Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Schlüsselworte: friend und inline

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.12.2003, 12:33 Uhr
(un)wissender
Niveauwart


Vertragen sich friend und inline nicht?
Ich bekomme immer undefined references...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.12.2003, 12:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Code?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.12.2003, 14:01 Uhr
(un)wissender
Niveauwart


Ich bekomme das Problem nur, wenn ich in der ,hhp-Datei den Funktionprototypen als friend inline schreibe und dann ich der .hpp-Datei den Rumpf fülle.
Fülle ich den Rumpf noch in der .hpp-Datei ist alles in Butter

Das geht (Ist ein sehr konstruiertes Bsp.):

C++:
#include<iostream>
#include <string>
using namespace std;

class test {
    public:
        test(int i): m_i(i) {}
        friend inline void testtest(const test &t);
    
    private:
     int m_i;    
};

void testtest(const test &t)
{
    cout << t.m_i;
}

int main() {
    test tt(4);
    testtest(tt);
    return 0;
}



Das geht nicht:

test.hpp

C++:
#include<iostream>
#include <string>
using namespace std;

class test {
    public:
        test(int i): m_i(i) {}
        friend inline void testtest(const test &t);
    
    private:
     int m_i;    
};



test.cpp

C++:
#include "test.hpp"
void testtest(const test &t)
{
    cout << t.m_i;
}



main.cpp

C++:
#include "test.hpp"

int main() {
    test tt(4);
    testtest(tt);
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.12.2003, 14:39 Uhr
virtual
Sexiest Bit alive
(Operator)


Das liegt aber nicht an der Kombination friend/inline sondern am inline ganz allein: Wenn etwas inline ist, muß die Definition der inline Funktion im Header stehen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.12.2003, 18:14 Uhr
(un)wissender
Niveauwart


Oh, das ist mir neu!
Ich könnte schwören, dass ich das auch schon mal anders gemacht habe und es funktioniert hat, naja, vielleicht Zufall.
Meine Güte, ich programmiere jetzt schon ein knappes Jahr C++ und habe auch schon viele 1000 Zeilen geschreiben und trotzdem lerne ich andauernd fundamentale Dinge.
Wie komplex ist diese Sprache eigentlich?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.12.2003, 20:54 Uhr
(un)wissender
Niveauwart


Wie sieht das denn aus, verhindert die Deklaration als friend das Default-Inlining?
Anders gefragt, wird testtest((const test &t) wahrscheinlich gelinlined ()?

C++:
#include<iostream>
#include <string>
using namespace std;

class test {
    public:
        test(int i): m_i(i) {}
        friend void testtest(const test &t)
        { cout << t.m_i; }
    
    private:
     int m_i;    
};



--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: