[C++]Dziwny problem z przekazaniem danych do konstruktora

Jeśli umiesz programować coś więcej niż pralkę automatyczną i telewizor to ten dział jest dla Ciebie. Pochwal się swoimi stronami internetowymi lub aplikacjami i skryptami.
Awatar użytkownika
Freelancer
Raczkujący
Raczkujący
Posty: 80
Rejestracja: 22 maja 2007, 14:12
Znak zodiaku: Byk
Lokalizacja: Sławice
Kontakt:

[C++]Dziwny problem z przekazaniem danych do konstruktora

Post autor: Freelancer » 13 grudnia 2010, 19:53

Witam.
Zrobiłem sobie pewną klasę w programie Dev-Cpp:

Kod: Zaznacz cały

class klasa{
  klasa(const char * parm1, float parm2, int parm3 = 1){
    // Kod konstruktora
  }
};

Klasa znajduje się w dwóch plikach: klasa.h oraz klasa.cpp
W pliku klasa.h jest deklaracja natomiast w klasa.cpp jest definicja.
Do pliku głównego jest dołączany plik klasa.h. Następnie deklarowany jest nowy obiekt:

Kod: Zaznacz cały

klasa * obiekt;

Podczas tworzenia nowego obiektu w main():

Kod: Zaznacz cały

obiekt = new klasa("tresc", 1);
// lub
obiekt = new klasa("tresc", 0.01);
//(prób było dość dużo więc wymieniam tutaj tylko te dwie)

lpojawia się błąd:
no matching function for call to `klasa::klasa(const char *, float)
candidates are: klasa::klasa(const klasa&)
klasa::klasa(const char*, float, int)

Wiem, że nie może znaleźć odpowiedniej metody tylko nie mam pojęcia dlaczego. Znalazłem inną klasę i zbudowałem tą swoją na jej przykładzie. W tamtej wszystko działa prawidłowo, natomiast w mojej mimo, robionych rzutowań, zmian typów parametrów itd za nic nie mogę uruchomić programu. Może Wy coś poradzicie bo ja już się męczę z tym dłuży czas i mam teraz pustkę w głowie.
Wiara potrafi czynić cuda. Trzeba tylko mocno wierzyć.

Awatar użytkownika
vash
Moderator
Moderator
Posty: 2859
Rejestracja: 21 listopada 2004, 16:37
Lokalizacja: Poznań
Kontakt:

Re: [C++]Dziwny problem z przekazaniem danych do konstruktor

Post autor: vash » 13 grudnia 2010, 20:11

Tak podany ciąg znaków nie jest stały (const) dlatego nie może znaleźć.

Awatar użytkownika
Freelancer
Raczkujący
Raczkujący
Posty: 80
Rejestracja: 22 maja 2007, 14:12
Znak zodiaku: Byk
Lokalizacja: Sławice
Kontakt:

Re: [C++]Dziwny problem z przekazaniem danych do konstruktor

Post autor: Freelancer » 13 grudnia 2010, 21:00

Próbowałem z const, bez const, podstawiałem zmienne, wskaźniki na zmienne i ciągle to samo.
Wiara potrafi czynić cuda. Trzeba tylko mocno wierzyć.

Awatar użytkownika
Olbi
Przyjaciel
Przyjaciel
Posty: 1596
Rejestracja: 31 maja 2007, 18:59
Znak zodiaku: Waga
Lokalizacja: Łódź
Kontakt:

Re: [C++]Dziwny problem z przekazaniem danych do konstruktor

Post autor: Olbi » 13 grudnia 2010, 22:09

Weź ty zainstaluje sobie wxDevC++, bo DevC++ nie jest rozwijany od sporego czasu i ma przestarzałą wersję kompilatora:
http://wxdsgn.sourceforge.net/
lub polecam tego:
http://www.codeblocks.org/

tucnak
Raczkujący
Raczkujący
Posty: 65
Rejestracja: 16 grudnia 2008, 00:15
Lokalizacja: Łódź

Re: [C++]Dziwny problem z przekazaniem danych do konstruktor

Post autor: tucnak » 1 stycznia 2011, 01:37

Kup książkę.

Awatar użytkownika
Freelancer
Raczkujący
Raczkujący
Posty: 80
Rejestracja: 22 maja 2007, 14:12
Znak zodiaku: Byk
Lokalizacja: Sławice
Kontakt:

Re: [C++]Dziwny problem z przekazaniem danych do konstruktor

Post autor: Freelancer » 7 stycznia 2011, 11:47

tucnak dzięki Ci wielkie za napisanie tego posta. Otóż dzięki Tobie właśnie 5 minut temu na spokojnie przejrzałem tamten kod jeszcze raz i przekonałem się jakim jestem idiotą.
Otóż problem leżał w miejscu w którym nie szukałem, a mianowicie w deklaracji czyli pliku .h.
Więc do rzeczy kod wyglądał tak:
deklaracja:

Kod: Zaznacz cały

class klasa{
  klasa(const char *, float, int);
};

definicja:

Kod: Zaznacz cały

klasa::klasa(char * parm1, float parm2, int parm3 = 1){
  // Kod konstruktora
}

a powinno być tak:
deklaracja:

Kod: Zaznacz cały

class klasa{
  klasa(const char *, float, int = 1);
};

definicja:

Kod: Zaznacz cały

klasa::klasa(char * parm1, float parm2, int parm3){
  // Kod konstruktora
}

Chyba nie muszę mówić co i gdzie spaprałem.
Co do książki to już od dawna planuje zakup Symfonii C++ Grębosza tylko jakoś nie mogę się zebrać, ale patrząc na to jakie błędy sadze trzeba będzie ją nabyć i to jak najszybciej.

PS. Co do projektu nad którym się właśnie męczę podeśle go do oceny jak skończę :)
Wiara potrafi czynić cuda. Trzeba tylko mocno wierzyć.

Magnetton
Raczkujący
Raczkujący
Posty: 3
Rejestracja: 9 kwietnia 2017, 19:12
Kontakt:

Re: [C++]Dziwny problem z przekazaniem danych do konstruktora

Post autor: Magnetton » 9 kwietnia 2017, 19:18

I jak z tym programikiem panie freelancer ?

ODPOWIEDZ