-
Data: 2022-07-25 16:31:07
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 25/07/2022 15:33, Piotr Gałka wrote:
> Ale moim celem było, aby tego GUID wpisać tylko i wyłącznie jako
> parametr wywołania funkcji - pominąć potrzebę robienia przeze mnie
> zmiennej tego typu.
> Twój przykład nawet stosując referencje nie realizuje tego co ja wtedy
> chciałem osiągnąć.
> W tym Twoim przykładzie?:
> ---------------
> static GUI konkretnyGUID = { };
>
> class KlasaKonkretna : public KlasaBazowa {
> public:
> KlasaKonkretna() : KlasaBazowa( konkretnyGUID ) { [...] };
>
> [...]
> };
> ---------------
>
> Mi chodziło o to aby: nie tworzyć statycznej zmiennej konkretnyGUID
> tylko zapis jego wartości ująć jakoś od razu w miejscu gdzie go
> wstawiłeś jako parametr konstruktora KlasyBazowej w konstruktorze Klasy
> konkretnej.
Nie rozumiem jaki by to miało mieć zysk.
Gdzieś to musisz trzymać.
Możesz zrobić tak:
class KlasaBasowa {
[...]
virtual GUI& getGUID() = 0;
};
class KlasaKonkretna : public KasaBazowa {
[...]
GUID& getGUID() override {
static GUID guid = { };
return guid;
}
}
Ale zysk taki, że masz metodę wirtualną ale nie masz pola w klasie bazowej.
> Konstruktor KlasyKonkretnej najchętniej zostawiłbym w pliku h, a takie
> static konkretny GUID to dla mnie musi być w pliku cpp więc i
> konstruktor trzeba tam przenieść.
Dlaczeo konstruktor chcesz mieć w h? Zwyczajowo nie ma powodów tego.
> Ja chciałem zrobić coś podobnego jak mam definiowane mikrokontrolery.
> Mam:
> class ATProg : public ATProc
> {
> ....
> public:
> ATProg(dword fs,dword fp,dword es,dword ep,qeord fm,dword
> sg):ATProc(...){}
> };
> I potem już konkretne są definiowane tak:
> class ATmega162Prog : public ATProg
> {
> public:
> ATmega162Prog():ATProg(0x4000,128,512,1,0x1EFFFF,0x1
E9404){}
> };
No wiec w czym problem?
class KlasaBazowa {
public:
KlasaBasowa( int a1, int a2, int a3m int a4 );
[...]
};
class KlasaKonkretna : publci KlasaBazowa {
public:
KlasaKonkretna() : KlasaBazowa( 1,2,3,4 ) { };
};
> Czyli konstruktor klasy bazowej miał mieć jeden parametr typu GUID a
> konstruktory kolejnych klas miały go wołać wpisując tam wartość tego GUIDa.
No to dokładnie tak to opisałem.
Być może widzisz to jako problem, że ten GUID jest widoczny przez cały
czas trwania programu w zmiennej globanej, do której przekazujesz
referencje. To jest szybkie - nie trzeba go w miejscu inicjować za
każdym razem.
> Wiem, że mi się to nie udało. Ogólnie wiem, że nie udawało mi się wpisać
> GUIDA jako parametru wywołania konstruktora (bezpośrednio w wywołaniu).
Jesli mówisz o inicjacji w miejscu, to powinno dać radę tak:
struct GUID {
int a1;
int a2;
};
class KlasaBazowa {
public:
KlasaBazowa( GUID const& _gui ) { /*tu mam GUID*/ };
};
class KlasaKonkretna : public KlasaBazowa {
public:
KlasaKonkretna() : KlasaBazowa( {1,2} ) { }
};
Zmienna istnieje tylko na czas wołania konstruktora KlasaBazowa. Musi
być wykorzystana w nim i nie wolno przetrzymać referencji na dłużej
(choć można zrobić kopię). Zapis {1,2} inicjuje GUIDa w miejscu i jest z
nowego C++, w starym to pewnie będzie "GUID(1,2)", zalezy jaki konstruktor.
Następne wpisy z tego wątku
- 25.07.22 18:00 Piotr Gałka
- 25.07.22 18:12 heby
- 25.07.22 20:40 Piotr Gałka
- 25.07.22 21:29 heby
- 26.07.22 13:53 Piotr Gałka
- 26.07.22 14:16 Piotr Gałka
- 26.07.22 14:55 heby
- 26.07.22 20:05 Piotr Gałka
- 28.07.22 20:55 Piotr Gałka
Najnowsze wątki z tej grupy
- W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- Weryfikacja myjki ultradźwiękowej
- zasieg radaru
- Zmywarka Bosch SRV55T43EU - awaria
- Kod zniżkowy w TME do 26.09.2025
- SFP, 10G, simplex sc/apc
- [słabe wiatry powodują - przyp. JMJ] Energetyczny paraliż w Niemczech
- NxtPaper
- Programiści nie przestają zadziwiać świat
- Długi kabel zasilający a na końcu procek
- Dlaczego nam nie idzie
- Co czujnik to inna temperatura
- Jak naprawić pilota
- Dlaczego TMP wer. 2.0 nie może być sprzedawany jako patyk USB lub karta PCIe 1x?!?
- produkcja w UE
Najnowsze wątki
- 2025-09-24 Andżelika Borys odwiedziła [WIELKIEGO PATRIOTĘ - przyp. JMJ] Andrzeja Poczobuta w [białoruskiej - przyp. JMJ] kolonii karnej
- 2025-09-24 W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- 2025-09-24 W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- 2025-09-24 W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- 2025-09-24 W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- 2025-09-23 Re: Kolory już są
- 2025-09-23 paragony grozy
- 2025-09-23 Znalazłem pieniądze przed bankiem - Absurdalny monolog o absurdalnym pytaniu. YES:)odc.909
- 2025-09-23 wymiana danych między urzędami
- 2025-09-23 Pozywanie za zniesławienie wpisem na X/Twitterze: Jaka jurysdykcja i jakie wyłączenia spod jurysdykcji?
- 2025-09-23 Re: Cezary Gmyz po doniesieniu Wysockiej-Schnepf do prokuratury POWTARZA "zbrodniczą" wypowiedź
- 2025-09-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-09-23 Warszawa => Senior Account Manager <=
- 2025-09-23 Warszawa => Programista Full Stack .Net <=
- 2025-09-23 Środa Wielkopolska => Konsultant SAP MM/WM/PP <=