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

Object was not declared in this scope C++

Cloud VPS
–1 głos
999 wizyt
pytanie zadane 23 sierpnia 2020 w C i C++ przez Drożdżówka Obywatel (1,870 p.)
edycja 23 sierpnia 2020 przez Drożdżówka

Witam!

Pokazuje mi się taki błąd jak w tytule po wpisaniu takiego kodu

main.cpp
#include <iostream>
#include "Test2.h"

using namespace std;

int main()
{
    Obiekt Test;
    Test.Name = "Test";
    Test1();
    return 0;
}
Test2.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED

#include <iostream>

using namespace std;

class Obiekt
{
    string Name;
};

void Test1();

#endif // TEST2_H_INCLUDED
Test3.cpp
#include "Test2.h"

void Test1()
{
    cout << Test.Name;
}
komentarz 23 sierpnia 2020 przez tkz Nałogowiec (42,040 p.)
Wkleiłeś dobry kod? Bo brakuje czegoś w main, dokładnie includa z klasą "Obiekt".
komentarz 23 sierpnia 2020 przez Drożdżówka Obywatel (1,870 p.)
Includuje klase w .h
komentarz 23 sierpnia 2020 przez tkz Nałogowiec (42,040 p.)
Odwołujesz się do zmiennej "Name" gdzie ona jest prywatna.
Pokaż konkretną nazwę błędu razem z linią w której występuje.

1 odpowiedź

+1 głos
odpowiedź 23 sierpnia 2020 przez Piotr Batko Stary wyjadacz (13,210 p.)
wybrane 23 sierpnia 2020 przez Drożdżówka
 
Najlepsza

Dwa problemy:

1. W mainie nie wiadomo co to za typ ten Obiekt, bo zapomniałeś o #include "Test2.h".

2. W Test3.cpp nie widać obiektu Test, bo on jest widoczny tylko w mainie. Tu potrzebujesz np. zmiennej globalnej. W Test2.h piszesz extern Obiekt Test;. To znaczy "gdzieś jest zdefiniowany taki obiekt". To wystarczy żebyś mógł już go zacząć używać w Test3.cpp. No i jeszcze gdzieś go zdefiniuj, w przestrzeni globalnej. Może być np. nad mainem. Może być w Test3.cpp, nieważne. Dodaj tam linijkę Obiekt Test;.

komentarz 23 sierpnia 2020 przez Drożdżówka Obywatel (1,870 p.)
Nie jest, zmieniłem to
komentarz 23 sierpnia 2020 przez tkz Nałogowiec (42,040 p.)
Pokaż nowy kod razem z pełnymi błędami.
komentarz 23 sierpnia 2020 przez Drożdżówka Obywatel (1,870 p.)
main.cpp
#include "Test2.h"
Obiekt Test;


int main()
{
    Test.Name = "Test";
    Test1();
    return 0;
}
Test.h
#ifndef TEST2_H_INCLUDED
#define TEST2_H_INCLUDED

#include <iostream>

using namespace std;

class Obiekt
{
public:
    string Name;
};

void Test1();

#endif // TEST2_H_INCLUDED
Test3.cpp
#include "Test2.h"

void Test1()
{
    cout << Test.Name;
}
BŁĘDY
C:\Users\NiePokażę\Desktop\test\Test3.cpp|5|error: 'Test' was not declared in this scope|

 

komentarz 23 sierpnia 2020 przez tkz Nałogowiec (42,040 p.)
#include "Test.hpp"
Obiekt Test;

int main()
{
    Test.Name = "Test";
    Test1();
    return 0;
}
#include "Test.hpp"
void Test1()
{
    extern Obiekt Test;
    cout << Test.Name;
}
#ifndef TEST_HPP_INCLUDED
#define TEST_HPP_INCLUDED

#include <iostream>
using namespace std;
class Obiekt
{
public:
    string Name;
};
void Test1();

#endif //TEST2_H_INCLUDED

 

komentarz 23 sierpnia 2020 przez Drożdżówka Obywatel (1,870 p.)
Dzięki!

Podobne pytania

0 głosów
1 odpowiedź 787 wizyt
pytanie zadane 23 października 2019 w C i C++ przez darekdede1995 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 574 wizyt
0 głosów
0 odpowiedzi 1,123 wizyt
pytanie zadane 8 sierpnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)

93,485 zapytań

142,417 odpowiedzi

322,765 komentarzy

62,898 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

Kursy INF.02 i INF.03
...