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

Problem "Undefinded reference to"

VPS Starter Arubacloud
0 głosów
477 wizyt
pytanie zadane 29 czerwca 2016 w C i C++ przez sparklemo7ion Początkujący (360 p.)

main.cpp:

#include <iostream>
#include <cstdlib>
#include "kalk.h"
using namespace std;

int main()
{
    Dzialanie dz [100];
for (int i =0; ; i++)
{
    dz[i].wybor();
}

return 0;
}

 

kalk.h:

#include <iostream>
using namespace std;

class Dzialanie{
    public:
int a,b,wynik;

int dodawanie ();
int odejmowanie ();
int mnozenie ();
int dzielenie ();
int modul();
void wybor(); //wybiera opcje dzialania
};

kalk.cpp:

#include <iostream>
#include <cstdlib>
#include "kalk.h"
using namespace std;

int Dzialanie::dodawanie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;

    return a+b;
}

int Dzialanie::odejmowanie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a-b;
}

int Dzialanie::mnozenie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a*b;
}

int Dzialanie::dzielenie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a/b;
}

int Dzialanie::modul()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a%b;
}

void Dzialanie::wybor()
{
    int co;
    cout <<"CO CHCESZ ZROBIC?"<<endl;
    cout <<"***********************************************"<<endl;
    cout <<"1.Dodawanie"<<endl;
    cout <<"2.Odejmowanie"<<endl;
    cout <<"3.Mnozenie"<<endl;
    cout <<"4.Dzielenie"<<endl;
    cout <<"5.Modul"<<endl;
    cout <<"0.Wyjscie"<<endl;
    cout <<"***********************************************"<<endl;
    cin>>co;

    switch ( co )
    {
    case 1:
        dodawanie();
        break;

    case 2:
        odejmowanie();
        break;

    case 3:
        mnozenie();
        break;

    case 4:
        dzielenie();
        break;

    case 5:
        modul();
        break;

    case 0:
        exit(0);
    }
}

Dopiero zacząłem programować obiektowo i postanowiłem sobie zrobić jakiś mały kalkulator, ale natrafiam na błąd, który nie wiem skąd się bierze "undefined reference to `Dzialanie::wybor()' "

I jeszcze jedno.. jak użyć wektora, albo przynajmniej wskaźnika, żeby zrobić dynamiczną tablicę na obiekt? 

Pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 29 czerwca 2016 przez niezalogowany
Dodałeś pliki do projektu?
komentarz 29 czerwca 2016 przez sparklemo7ion Początkujący (360 p.)
Myślalem, że wystarczy zaincludować plik nagłówkowy i mieć pliki w tym samym folderze :P

Chyba wiem o co Ci chodzi no i klikam Project -> Add files i nic się nie dzieje jak to klikne, żadne okno się nie pojawia.
komentarz 29 czerwca 2016 przez niezalogowany
Spróbuj zrestartować IDE i jeszcze raz dodać pliki do projektu.
komentarz 29 czerwca 2016 przez sparklemo7ion Początkujący (360 p.)
Dalej nic.
komentarz 29 czerwca 2016 przez niezalogowany
Nie pomogę Ci bo z Code Blocks już od dawna nie miałem styczności a po zapytaniu wujka Google, nie znalazłem nikogo z takim problemem jak ty.
komentarz 30 czerwca 2016 przez sparklemo7ion Początkujący (360 p.)
Ok, dzięki za próbe:)
0 głosów
odpowiedź 29 czerwca 2016 przez MichuDev Pasjonat (20,300 p.)
Jakiego kompilatora i IDE używasz. Jeżeli kompilator to GCC (z lini poleceń) to upewnij się że podałeś wszystkie pliki z rozszerzeniem .cpp:

g++ main.cpp kalk.cpp -Wall -Wextra -std=c++14
komentarz 2 lipca 2016 przez sparklemo7ion Początkujący (360 p.)
Zmieniłem, dalej to samo :/
komentarz 2 lipca 2016 przez MichuDev Pasjonat (20,300 p.)

KOD: Zwracasz wynik, a go nie wypisujesz, program bez sensu, jak użytkownik ma się dowiedzieć jaki jest wynik ? Użyje debuggera ? Nawet jak usuniesz jego symbole z pliku korzystając ze strip <nazwa pliku> w gcc ? Chyba oczekujesz od programu odpowiedzi ?

Poprawiony plik kalk.cpp:

#include <iostream>
#include <cstdlib>
#include "kalk.h"
using namespace std;

int Dzialanie::dodawanie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;

    return a+b;
}

int Dzialanie::odejmowanie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a-b;
}

int Dzialanie::mnozenie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a*b;
}

int Dzialanie::dzielenie()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a/b;
}

int Dzialanie::modul()
{
    cout<<"Podaj 2 liczby: ";
    cin>>a;
    cin>>b;
    return a%b;
}

void Dzialanie::wybor()
{
    int co;
    cout <<"CO CHCESZ ZROBIC?"<<endl;
    cout <<"***********************************************"<<endl;
    cout <<"1.Dodawanie"<<endl;
    cout <<"2.Odejmowanie"<<endl;
    cout <<"3.Mnozenie"<<endl;
    cout <<"4.Dzielenie"<<endl;
    cout <<"5.Modul"<<endl;
    cout <<"0.Wyjscie"<<endl;
    cout <<"***********************************************"<<endl;
    cin>>co;

    switch ( co )
    {
    case 1:
        cout << "Wynik: " <<  dodawanie() << endl;
        break;

    case 2:
        cout << "Wynik: " << odejmowanie() << endl;
        break;

    case 3:
        cout << "Wynik: " << mnozenie() << endl;
        break;

    case 4:
        cout << "Wynik: " << dzielenie() << endl;
        break;

    case 5:
        cout << "Wynik: " << modul() << endl;
        break;

    case 0:
        exit(0);
    }
}

Mnie wszystko działa, może dać ci screeny ?

komentarz 2 lipca 2016 przez sparklemo7ion Początkujący (360 p.)
Tak, wiem przegapiłem to, ale poprawiłem kod praktycznie zaraz po wrzuceniu na forum. A błędy dalej wysypuje.
komentarz 2 lipca 2016 przez sparklemo7ion Początkujący (360 p.)
Może nie bawić się, tylko zmienić IDE?
komentarz 2 lipca 2016 przez sparklemo7ion Początkujący (360 p.)
W DevC++ to samo.. Nie rozumiem już...

https://zapodaj.net/5942a5c5dd51e.jpg.html

Podobne pytania

0 głosów
1 odpowiedź 259 wizyt
pytanie zadane 11 sierpnia 2018 w C i C++ przez XSPACE Użytkownik (690 p.)
0 głosów
2 odpowiedzi 152 wizyt
0 głosów
1 odpowiedź 322 wizyt
pytanie zadane 18 września 2020 w C i C++ przez Mateusz Żaba Nowicjusz (150 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...