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

[C++] funkcja zaprzyjaźniona

Ostatnio zmodyfikowano 2013-10-18 01:57
Autor Wiadomość
thomek
Temat założony przez niniejszego użytkownika
[C++] funkcja zaprzyjaźniona
» 2013-10-17 22:30:16
Cześć.

Mam nadzieję, że uda się wam mi pomóc. Sprawa na pewno będzie dla was prosta, a mi bardzo zależy na czasie.

Kawałek kodu:
friend std::ostream &operator <<(std::ostream &out, const Polynomial &p); //w klasie, deklaracja frienda


Teraz chcę z niej zrobić pożytek, niżej opiszę wam błędy:
C/C++
ostream & operator <<( std::ostream & out, Polynomial & p )
{
    out << p.getCoefficient( p.degree ) << "*x^" << p.degree;
   
    for( int i = p.degree - 1; i >= 1; i-- )
    { out << "+" << p.getCoefficient( i ) << "*x^" << i; }
   
    out << "+" << p.getCoefficient( 0 );
    return out;
}

Po 1. Error: explicit type is missing ('int" assumed), gdy najeżdżam myszką na znak & po słowie "ostream".
Po 2. Error: member "Polynomial::degree" (declared at line 10) is inaccessible, gdy najeżdżam na "degree". Nie mam pojęcia, dlaczego friend tego nie widzi. W klasie jest zadeklarowane unsigned int degree jako private.

Jeśli jeszcze możecie, jak wywołać klasę w mainie, żeby wykonała to wszystko, czego tam chciałem, po wpisaniu, np. cout<<p?
Chodzi o to, żeby całą wywołać tym jednym składnikiem, bo tak powinno to wyglądać, a nie tak, jak w friendzie, gdzie muszę to wypisywać.

Bardzo dziękuję za każdą pomoc, bardzo mi się śpieszy.



//edit
Punkt 1. nieważny, poradziłem sobie z tym. Co za głupota, po klasie nie dałem średnika, nie zrażajcie się tym. To moja pierwsza klasa, męczą nas strasznie, aż wstyd się przyznać.
P-93908
Monika90
» 2013-10-17 23:02:42
C/C++
friend std::ostream & operator <<( std::ostream & out, const Polynomial & p );

ostream & operator <<( std::ostream & out, Polynomial & p );
To są dwie różne funkcje, bo różnią się typami parametrów.
P-93910
thomek
Temat założony przez niniejszego użytkownika
» 2013-10-17 23:09:34
Chodzi ci o "const"?
Zaraz spróbuję to wywalić, ale wcześniej skutkowało to jakimiś dodatkowymi problemami, mam na myśli podkreślanie błędów w kodzie.
Chyba że znacie jakiś inny sposób, żeby to naprawić, bo to musi być skonstruowane w ten sposób, bez żadnych większych zmian.

Ale dzięki za odpowiedź, bardzo mi się śpieszy, więc każda się przydaje.


//edit
Dobra, działa, jesteś wielka.

A odnośnie drugiej części, tego wywołania? Potrzebuję wywołać ten wielomian, coś chyba w tym stylu było w friendzie. Wiem, że zadaję wam głupie pytania, to moja pierwsza klasa, jaką piszę, a wymagania są w niej spore, jak na początki. Dlatego nie mogę tego ogarnąć tylko przy pomocy poradników, jakie są, np. na tej stronie.

//edit2
Chodzi mi o to, że w mainie chcę wywołać coś z klasy, więc próbuję poprzez
Polynomial p;
, ale problem w tym, że to nie działa: 'Polynomial' : no appropriate default constructor available.

Wszędzie pokazują to tym sposobem, siedzę nad projektem drugi czy trzeci dzień po x godzin, już mi mózg wysiada, a jestem pewien, że problem jest trywialny.

P-93911
DejaVu
» 2013-10-17 23:40:46
Jeden temat = jeden problem. Drugi problem nie ma w ogóle związku z tematem i jest niezależnym problemem w stosunku do tego, który został postawiony w pierwszym poście.
P-93917
thomek
Temat założony przez niniejszego użytkownika
» 2013-10-17 23:56:46
Luzuj trochę. Problem jest prosty i bez sensu pisać o nim osobny temat. Skończ bawić się w formułki, bo nie mam na nie czasu. Po prostu tutaj nie wchodź, jak masz z tym problem. Jutro rano możesz sobie go przenieść do kosza.
P-93918
akwes
» 2013-10-18 00:42:54
@thomek, bardzo miło nam słyszeć, że tak się do nas odnosisz, kiedy ktoś z tego forum próbuje Ci pomóc.


Luzuj trochę.
Nikt tutaj nie "spina" żeby "luzować". To była sucha informacja, do której się zastosujesz jeżeli zależy Ci na otrzymaniu odpowiedzi na pytanie.


Problem jest prosty i bez sensu pisać o nim osobny temat.
Większość problemów jest prostych, to znaczy, że nie ma sensu pisać tematów? Należy zamiast tego zrobić zbiorczy temat "Pomoc dla użytkownika thomek"? Raczej nie. Osobne tematy pomagają lepiej odnaleźć rozwiązania przyszłym użytkownikom. Jeżeli ktoś będzie miał taki sam problem jak Ty, to nie będzie szukał rozwiązania w temacie o zupełnie innej nazwie.


Skończ bawić się w formułki, bo nie mam na nie czasu.
A my nie mamy czasu cały czas tłumaczyć w kółko tego samego, żebyś do nowego problemu założył nowy temat. Oszczędź wiec czasu sobie i nam i załóż nowy temat jeżeli masz nowy problem. Chętnie tam odpowiemy.


Po prostu tutaj nie wchodź, jak masz z tym problem.
Na razie to Ty masz jakiś problem, z tym, że ktoś Ci przypomina o zasadach korzystania z tego serwisu.
P-93919
DejaVu
» 2013-10-18 01:57:43
Luzuj trochę. Problem jest prosty i bez sensu pisać o nim osobny temat. Skończ bawić się w formułki, bo nie mam na nie czasu. Po prostu tutaj nie wchodź, jak masz z tym problem. Jutro rano możesz sobie go przenieść do kosza.
Jakbym miał rozwiązać problem to po Twoim poście Ty miałbyś już bana, a temat by został zamknięty i uznany za rozwiązany. Jak nie znasz regulaminu ani zasad panujących u nas to nie wyjeżdżaj z takimi tekstami ani do mnie, ani do jakiegokolwiek innego użytkownika naszego forum, bo następnym razem zakończy się to banem (czytaj: będziesz 4 osobą zbanowaną w ciągu ostatnich 4 lat).

Zamykam.
P-93921
« 1 »
  Strona 1 z 1