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

Undefined reference

Object Storage Arubacloud
0 głosów
179 wizyt
pytanie zadane 27 maja 2016 w C i C++ przez Szahid Pasjonat (20,930 p.)

Nie moge sobie poradzić z tym błędem. Zaznaczyłem go w komentarzu 

 

// plik cpp z mainem

#include <iostream>
#include<fstream>
#include<windows.h>
#include<cstdlib>
#include"ProjektG.h"

using namespace std;




int main()
{
    cout << "Otwieranie gownego pliku.txt"<< endl;
    for ( int i=0;i<3;i++)
    {
        cout<<".";
        Sleep(800);
    }
    system("cls");

    fstream plik_g;
    plik_g.open("glowny.txt", ios::in);
    if(plik_g.good())
    {

    }
    else {cout<<"**** bombki szczelil"; Sleep(2000); exit(0);}



    plik_g>>zmienneM::liczba_poczatkowa; //undefined reference to 
//zmienneM::liczba_poczatkowa

    plik_g.close();


   if ( plik_g.fail())
   {
       cout <<" Nie udalo sie wczytac danych"<<endl;
       Sleep(2000);
       exit(0);
   }

cout<<"     Posiadasz "<<zmienneM::liczba_poczatkowa<<" roslin"<<endl;
Sleep(1400);

zmienneM::menu();


    return 0;
}

plik.h

#ifndef ProjektG.h
#define ProjektG.h
#include <iostream>

namespace zmienneM
{
  extern  unsigned short int liczba_poczatkowa;

   void menu();
}


#endif

plik.cpp

 

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

using namespace std;

namespace zmienneM
{

    void menu()
    {
            cout<<"            MENU"<<endl;
            cout<<"1  Dodaj rosline"<<endl;
            
    }
}




 

1 odpowiedź

+2 głosów
odpowiedź 27 maja 2016 przez draghan VIP (106,230 p.)
wybrane 28 maja 2016 przez Szahid
 
Najlepsza
W nagłówku masz jedynie deklarację zmiennej. Zdefiniuj ją w pliku *.cpp.
komentarz 27 maja 2016 przez Szahid Pasjonat (20,930 p.)
a czy

plik_g>>zmienneM::liczba_poczatkowa;

 

nie jest definicją ?

jeśli nie to jak ona powinna wyglądać ?
komentarz 27 maja 2016 przez draghan VIP (106,230 p.)

Nie, to jest wywołanie operatora przesunięcia bitowego w prawo na rzecz obiektu o identyfikatorze plik_g oraz zmienneM::liczba_poczatkowa;

Musisz zdefiniować zmienną przed jakimkolwiek użyciem. Najlepiej tam, gdzie umieściłeś resztę definicji z przestrzeni zmienneM, dla porządku.

// plik.cpp
namespace zmienneM
{
    unsigned short int liczba_poczatkowa;
    void menu()
    {
            cout<<"            MENU"<<endl;
            cout<<"1  Dodaj rosline"<<endl;
             
    }
}
komentarz 27 maja 2016 przez Szahid Pasjonat (20,930 p.)
Niestety nie pomogło. Nadal wyskakuje to samo
komentarz 27 maja 2016 przez draghan VIP (106,230 p.)
To źle, bo po tej poprawce kod jest poprawny.

http://vpx.pl/i/2016/05/28/szachid.png
komentarz 28 maja 2016 przez Szahid Pasjonat (20,930 p.)
komentarz 28 maja 2016 przez draghan VIP (106,230 p.)
Nie definiuj tej zmiennej lokalnie w funkcji, skoro chcesz ją mieć globalną w namespace.
komentarz 28 maja 2016 przez Szahid Pasjonat (20,930 p.)
Przez nieuwage to tam wpakowałem.

Dziękuje z apomoc
komentarz 28 maja 2016 przez draghan VIP (106,230 p.)
Późno już, może lepiej się przespać kapkę. ;)

Dobrej nocy.

Podobne pytania

0 głosów
2 odpowiedzi 267 wizyt
pytanie zadane 7 stycznia 2023 w C i C++ przez mayak Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 461 wizyt
pytanie zadane 13 października 2022 w C i C++ przez Bilib Użytkownik (990 p.)
0 głosów
0 odpowiedzi 418 wizyt
pytanie zadane 15 lutego 2022 w C i C++ przez Marcinek23 Nowicjusz (120 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...