redeklaracja metod z .h w .cpp ?

0

Piszę pierwszy program w c++, plik nagłówkowy i .cpp zrobiłem analogicznie do tego co było na wykładzie, ale mimo to Visual w którym pisze podkreśla mi błędy przy każdej metodzie i pisze :
function Zespolona::(nazwa f.) may not be redeclared outside its class

Byłbym wdzięczny za wytłumaczenie dlaczego jest źle i jak zrobić żeby było poprawnie

cały plik .h

class Zespolona{

    private:
        double re;
        double im;
    public:
        Zespolona::Zespolona(double real,double img);

        Zespolona add(Zespolona &);

        Zespolona sub(Zespolona &);

        Zespolona mul(Zespolona &);

        Zespolona div(Zespolona &);

        void print();

        ~Zespolona();
};

fragment .cpp

#include "Zespolona.h"
#include<iostream>

    Zespolona::Zespolona(double real,double img){    
        re=real;
        im=img;
    }

    Zespolona Zespolona::add(Zespolona & x);
    {
        return Zespolona(re+x.re ,im+x.im);
    }

//pozostałe instr. analogicznie do add

    Zespolona::~Zespolona(){}

dodanie znaczników <code class="cpp"> - fp

0

Zwróć uwagę jak masz zadeklarowany konstruktor klasy. Fragment

Zespolona::

jest niewłaściwy.

2

Masz średnik i przed nawiasem klamrowym.

Zespolona Zespolona::add(Zespolona & x); //tego średnika nie moze tu być
{
//bla bla
}
0

Dziękuje za pomoc. Próbowałem sam ,,naprawić" wersję z wykładu ale się nie udało.

Mam jeszcze pytanie odnośnie wskazówki którą dostałem:
czy tak powinien wyglądać ten konstruktor z listą inicjalizacyjną

Zespolona::Zespolona(double real,double img): re(real), im(img) {}

?

0

czy tak powinien wyglądać ten konstruktor z listą inicjalizacyjną
Wygląda ok.

Nie widzę sensu, by pola klasy Zespolona były prywatne.
Uzasadnienie: pola publiczne są potrzebne, by łatwo dostać się do części rzeczywistej i zespolonej liczby. Nigdy nie będzie ani więcej ani mniej pól w tej klasie, bo nie byłaby to już liczba zespolona. Ani nie potrzebujesz żadnego kodu do ustawiania ani pobierania tych pól.

0

mam pewne zalecenia których mam się trzymać pisząc w c++ i zapewne jak zrobię pola typu public to polecą za to pkt-y

na szczęście w tym programie nie mam żadnego problemu z dostępem do tych pól

0

Jeżeli prowadzący zna się na rzeczy to za prywatne pola w liczbie zespolonej punkty polecą. Jak potrzebujesz jakichś składowych prywatnych to zrób to w klasie testującej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0