Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Funkcja zaprzyjaźniona w innym pliku

Ostatnio zmodyfikowano 2015-11-25 15:41
Autor Wiadomość
Roofy5
Temat założony przez niniejszego użytkownika
[C++]Funkcja zaprzyjaźniona w innym pliku
» 2015-11-23 22:34:58
Hej,

Mam problem z funkcją zaprzyjaźnioną.
Tworzę klasę Wektor, w której chcę przeciążyć operator << aby wypisywać pozycje X i Y wektora.
Funkcja musi być przyjacielem klasy (lewym operandem jest strumień ostream).

Robię to tak:

C/C++
//Plik CWektor.h
#pragma once

class CWektor
{
private:
    double * coord;
public:
    CWektor();
    CWektor( double x, double y );
    CWektor( const CWektor & ob );
    ~CWektor();
   
    friend ostream & operator <<( ostream & str, const CWektor & ob );
};

C/C++
//CWektor.cpp
#include "CWektor.h"
#include <iostream>

using namespace std;

CWektor::CWektor()
{
    ...
}
CWektor::CWektor( double x, double y )
{
    ...
}
CWektor::CWektor( const CWektor & ob )
{
    ...
}
CWektor::~CWektor()
{
    ...
}

ostream & operator <<( ostream & str, const CWektor & ob )
{
    str << "X: " << ob.coord[ 0 ] << "   Y: " << ob.coord[ 1 ] << endl;
    return str;
}

W tym drugim pliku na końcu chcę dodać tą właśnie funkcję, ale kompilator zgłasza błąd, iż składnik ob.coord jest prywatny - nie działa przyjaźń.
Teraz moje pytanie - gdzie powinienem umieścić definicję tej funkcji?

Pozdrawiam Michał
P-140675
michal11
» 2015-11-23 23:06:03
Jaki kompilator (ew. IDE) ?
P-140680
carlosmay
» 2015-11-23 23:09:43
Przenieś
C/C++
#include <iostream>
 do pliku CWektor.h.
P-140682
Roofy5
Temat założony przez niniejszego użytkownika
» 2015-11-25 15:41:23
Visual Studio 2013

Problem rozwiązany - zapomniałem dołączyć iostream i dodatkowo dopisać std::ostream&
:P
P-140774
« 1 »
  Strona 1 z 1