• 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?

Object Storage Arubacloud
0 głosów
239 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 363 wizyt
pytanie zadane 3 kwietnia 2021 w C i C++ przez DzikieHarce Użytkownik (690 p.)
0 głosów
2 odpowiedzi 602 wizyt
+1 głos
1 odpowiedź 347 wizyt
pytanie zadane 5 sierpnia 2019 w C i C++ przez luna22 Obywatel (1,420 p.)

92,632 zapytań

141,499 odpowiedzi

319,878 komentarzy

62,011 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!

...