• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Podstawy C++ - Tworzenie klasy z argumentami

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
215 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez JKluseczka Obywatel (1,430 p.)
zamknięte 11 czerwca 2016 przez JKluseczka

Kod main.cpp:

#include <iostream>
#include "getFromTo.cpp"
using namespace std;

int main()
{
    getFromTo gft = new getFromTo('a');
    gft.print();
    return 0;
}

Kod getFromTo.cpp:

#include <iostream>

class getFromTo{
    char b;
    public:
    getFromTo(char a){
        b = a;
    }
    ~getFromTo(){
        delete &b;
    }
    void print(){
        std::cout<<b;
    }
};

Error:

 Build: Debug in getFromTo (compiler: GNU GCC Compiler)
In function 'int main()':
main.cpp|7|error: invalid conversion from 'getFromTo*' to 'char' [-fpermissive]
getFromTo.cpp|6|note: initializing argument 1 of 'getFromTo::getFromTo(char)'

Ktoś wie co robię źle?

@edit

Dlaczego to działa...

getFromTo gft('a');
gft.print();

a przykład z tematu nie działa?

komentarz zamknięcia: Znaleziono odpowiedź

2 odpowiedzi

0 głosów
odpowiedź 11 czerwca 2016 przez Radfler VIP (101,030 p.)
wybrane 11 czerwca 2016 przez JKluseczka
 
Najlepsza
getFromTo gft = new getFromTo('a');

Zmienna gft powinna być wskaźnikiem, a nie obiektem. Poza tym przydałoby się zwolnić zaalokowaną pamięć.

delete &b;

Nie wolno usuwać zmiennych składowych operatorem delete, chyba że naprawdę jesteś pewien tego co robisz.

komentarz 11 czerwca 2016 przez JKluseczka Obywatel (1,430 p.)
A czm powinna być wskaźnikiem, a nie może być obiektem?
komentarz 11 czerwca 2016 przez JKluseczka Obywatel (1,430 p.)

Bo udało mi się wymyśleć

getFromTo gft('a');
gft.print();

Ale ciągle nwm czm się z new nie da...

komentarz 11 czerwca 2016 przez Radfler VIP (101,030 p.)

Operator new zwraca wskaźnik, więc musisz użyć wskaźnika.

getFromTo* gft = new getFromTo('a');
// ...
delete gft;

A takie coś:

getFromTo gft('a');

To tworzenie zwykłego automatycznego obiektu.

1
komentarz 11 czerwca 2016 przez JKluseczka Obywatel (1,430 p.)
Thx. :D
0 głosów
odpowiedź 11 czerwca 2016 przez Szahid Pasjonat (20,970 p.)
To co widzę to raczej nie jest błąd ktòry wywala kompilator ale jeżeli odwołujesz się do metody przez wskaźnik to powinieneś zastosować -> zamiast . ( chodzi mi o gft->printf (); )

Podobne pytania

0 głosów
5 odpowiedzi 448 wizyt
pytanie zadane 26 marca 2019 w Java przez gorgonkowa Obywatel (1,810 p.)
0 głosów
2 odpowiedzi 222 wizyt
pytanie zadane 29 maja 2016 w Java przez yxxo Początkujący (350 p.)
0 głosów
1 odpowiedź 459 wizyt
pytanie zadane 3 października 2016 w C i C++ przez niezalogowany

93,434 zapytań

142,429 odpowiedzi

322,661 komentarzy

62,797 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...