Avatar billede motz Nybegynder
18. september 2003 - 21:23 Der er 22 kommentarer og
1 løsning

friend funktioner MSVS 6.0

Er der nogen der kender til problemer
angående friend funktioner i MSVS 6.0:

Jeg opretter et objekt af en klasse i friend
funktionen, men jeg får en fejl angående, at jeg
ikke har adgang til de private data, når jeg bruger
objektet til dette.!!

Det har ikke været noget problem i MSVS.net 2003
Avatar billede arne_v Ekspert
18. september 2003 - 21:28 #1
Må vi se et lille stykke kode som illusterer ?
Avatar billede motz Nybegynder
18. september 2003 - 21:28 #2
ostream &operator<< (ostream &output, const PQueue &tmp)
{
    output << "Tallene i koen er: ";
    for (int i = 0; i < tmp.size; i++)
        output << tmp.data [i] << " ";
   
    output << endl;
    return output;
}
Avatar billede arne_v Ekspert
18. september 2003 - 21:32 #3
Og den er erklæret som:

friend ostream &operator<<(ostream &output,const PQueue &tmp);

?
Avatar billede motz Nybegynder
18. september 2003 - 21:34 #4
prototypen i headerfilen ser således ud og er deklareret uden for klassen:

friend ostream &operator<< (ostream &, const PQueue &);
Avatar billede arne_v Ekspert
18. september 2003 - 21:36 #5
Signaturen er den rigtige.

Skal den ikke erklæres inde i klassen ??
Avatar billede soreno Praktikant
18. september 2003 - 21:37 #6
Har du patched MSVC6 med nyeste servicepack ?

Jeg synes at kunne huske at der er en "friend" bug i vanilla udgaven af MSVC6.
Avatar billede motz Nybegynder
18. september 2003 - 21:41 #7
Arne V => Jeg mener helt bestemt friend funktioner skal erklæres uden
for klassen.....ellers ville det vel ikke være en friend funktion.
Jeg har dog prøvet at lægge prototypen ind som medlemsfunktion, hvilket
gav samme problem.............

soreno=> Har du et link??
Avatar billede soreno Praktikant
18. september 2003 - 21:44 #8
Avatar billede arne_v Ekspert
18. september 2003 - 21:45 #9
Jeg mener bestemt at de skal erklæres inde i klassen.

Hvordan skal compileren ellers gætte hvem metode er friend for ?
Avatar billede motz Nybegynder
18. september 2003 - 21:48 #10
Det bliver vi nødt til at finde ud af henter lige min bog
Avatar billede motz Nybegynder
18. september 2003 - 21:56 #11
Jeg skriver lige et eks. fra min bog under afsnittet:

friend functions and friend classes

class Count {
    friend void setX( Count &, int);
public:
    .
    .
    .
private:
    .
    .
    .
};

ja okay. det er inde i klassen, men ikke i private eller public. Jeg tror vi mente det samme, men jeg tænkte kun lige på private og public som klassen......
Avatar billede motz Nybegynder
18. september 2003 - 21:57 #12
Det var jo selvfølgelig osse der min friend funtion var erklæret!!
Avatar billede arne_v Ekspert
18. september 2003 - 21:59 #13
OK. Så er vi enige.
Avatar billede motz Nybegynder
18. september 2003 - 22:01 #14
Tak for hjælpen
Avatar billede arne_v Ekspert
18. september 2003 - 22:07 #15
#include <iostream>

using namespace std;

class C
{
  private:
      int v;
  public:
      C(int v);
      friend ostream &operator<<(ostream &out, const C &o);
};

C::C(int v)
{
  this->v = v;
}

ostream &operator<<(ostream &out, const C &o)
{
  out << o.v;
  return out;
}

int main()
{
  C test(123);
  cout << test << endl;
  return 0;
}

kompiler med både GCC 3.1 og VC++ 6.0 SP5
Avatar billede motz Nybegynder
18. september 2003 - 22:16 #16
Okay, men jeg må jo bare have downloaded den service pack.
Du kan jo bare lige trykke et svar ind, så kan du få 30
point for altid at være klar med en hjælpende hånd......
Det kan være jeg får ekstra brug for det når jeg skal
lave semesterprojekt.
Avatar billede arne_v Ekspert
18. september 2003 - 22:18 #17
Jeg håber du har ADSL ! (den er på 133 MB)
Avatar billede arne_v Ekspert
18. september 2003 - 22:19 #18
svar

men skal Søren ikke også have nogle point ?
Avatar billede motz Nybegynder
18. september 2003 - 22:22 #19
Han har jo ikke spurgt efter nogen!!

Det har jeg ikke, men jeg "suger" den bare nede fra skolen!!
Avatar billede motz Nybegynder
18. september 2003 - 22:24 #20
Kan jeg godt overføre point til en anden bruger, i så fald hvordan??

Så vil jeg da lige gøre det, så der ikke bliver problemer............
Avatar billede arne_v Ekspert
18. september 2003 - 22:27 #21
Enten kan du lave et spørgsmål med titel "point til Soreno" og et
link til dette spørgsmål.

Eller så kan jeg gøre det og overføre f.eks. halvdelen til ham.
Avatar billede kenp Novice
18. september 2003 - 22:38 #22
soreno ->hent point her
http://www.eksperten.dk/spm/403025
Avatar billede arne_v Ekspert
18. september 2003 - 23:38 #23
Han ser det nok i morgen tidlig (han er så vidt jeg ved A menneske !).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester