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

Jak użyć typu z jednego obiektu jako parametru metody drugiego?

VPS Starter Arubacloud
0 głosów
221 wizyt
pytanie zadane 13 lipca 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

Mam dwa obiekty, podzielone na 2 pliki .cpp i 2 pliki.h oraz plik główny z funkcją main.

Chciałbym użyć jako argumentu metody z jednego pliku, struktury z drugiego.

W pilkach nagłówkowych dołączyłem pliki.h drugiej klasy,

Zapis:

// plik Lista.h
void wykonaj_opcje(Menu::menu_wyg[]);

generuje 2 błędy:

C2027 - use of undefined type 'Menu'

C2061 - syntax error: identifier 'menu_wyg'

Struktura menu_wyg jest publiczna.

komentarz 13 lipca 2016 przez DragonCoder Nałogowiec (36,500 p.)
A dolozyles plik .h do .cpp tej samej klasy a później do drugiego gdzie chcesz to dodać? Musisz 2 razy zainkludowac plik.h

2 odpowiedzi

+1 głos
odpowiedź 13 lipca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 13 lipca 2016 przez Sinnley
 
Najlepsza

Rozumiem, że chcesz przesłać tablicę? Jeżeli tak to poniżej masz przykładowy kod jak by to wyglądało w plikach:
(Kod nietestowany, ale powinien działać.. najwyżej gdzieś pominąłem jakiś średnik, to go sobie dopiszesz)

//Menu.h

namespace Menu
{
   struct menu_wyg { int a; };
}

//Lista.h

#include <Menu.h> //Możesz też użyć tzw. deklaracji "forward":
//struct Menu::menu_wyg; <- Ten zapis oznacza, że gdzieś później w kodzie pojawi się struktura menu_wyg znajdująca się w przestrzeni nazw Menu
//Oczywiście, jeżeli zastosujesz taką deklarację.. to plik do ciała tej struktury musisz zaincludować w pliku Lista.cpp,..
//Innymi słowy w pliku Lista.cpp musisz umieścić linijkę #include <Menu.h> (Ponieważ kompilator wie, że taka struktura się pojawi.. ale nie wie co się w niej zawiera. Ciało struktury menu_wyg będzie znał dopiero w pliku Lista.cpp)

void wykonaj_opcje(Menu::menu_wyg*);

//Lista.cpp

#include <Lista.h>

void wykonaj_opcje(Menu::menu_wyg* Struktura)
{
   //Jakiś kod np.
   Struktura[0].a=10;
}

//main.cpp

#include <Lista.h>
#include <Menu.h> //<- nIe jestem pewien czy to tu musi być.. (jest już w Lista.h), ale lepiej dać

int main()
{
   ...
   Menu::menu_wyg Tablica[10];
   wykonaj_opcje(Tablica); //<- Nazwa tablicy jest jednocześnie adresem jej pierwszego elementu, czyli Tablica == &Tablica[0]
   ...
}

 

0 głosów
odpowiedź 13 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)
Pokaż deklarację menu_wyg, bo tutaj nie wiadomo o co chodzi.
komentarz 13 lipca 2016 przez Sinnley Stary wyjadacz (12,810 p.)
komentarz 13 lipca 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Chce wykorzystac uprzednio odpowiednio pozmieniana strukture wyg[6] jako argument w metodzie innej klasy.
komentarz 13 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)

No to tak jak zrobiłeś To, co ty napisałeś zadziała dla pliku nagłówkowego. W pliku .cpp należy jeszcze nazwać jakoś ten parametr.

void wykonaj_opcje(Menu::menu_wyg item[]);

Skoro pokazujesz nam plik Lista.h i nie działa podany przez Ciebie przykład to jedyne co przychodzi do głowy to brak #include "Menu.h"

 

Inna sprawa jest taka, że skoro ta struktura jest i tak jest publiczna to może warto wynieść ją poza klasę.

Podobne pytania

+1 głos
0 odpowiedzi 286 wizyt
pytanie zadane 3 kwietnia 2021 w C i C++ przez DzikieHarce Użytkownik (690 p.)
0 głosów
2 odpowiedzi 547 wizyt
+1 głos
1 odpowiedź 304 wizyt
pytanie zadane 5 sierpnia 2019 w C i C++ przez luna22 Obywatel (1,420 p.)

92,454 zapytań

141,262 odpowiedzi

319,099 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!

...