- A Colorful "fagyosan kompakt" alkatrészekkel megy elébe a nyárnak
- A Keychron ismét egy űr betöltését vállalta magára az egerek szegmensében
- Az átlagnál vaskosabb ventilátorok kandikáltak ki a Corsair vitorlája mögül
- Csatába küldte Magyarországon idei csúcs hangprojektoros szettjét a Samsung
- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Mini-ITX
- ThinkPad (NEM IdeaPad)
- A Keychron ismét egy űr betöltését vállalta magára az egerek szegmensében
- Gaming notebook topik
- 3D nyomtatás
- Egyre gyorsabban ügyködik saját HBM memóriáján Kína
- Fejhallgató erősítő és DAC topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Milyen billentyűzetet vegyek?
- Raspberry Pi
Hirdetés
-
Az átlagnál vaskosabb ventilátorok kandikáltak ki a Corsair vitorlája mögül
ph Az amerikai cég legfrissebb szériája kétféle méretben választható, és fél évtizedes jótállással kecsegteti leendő gazdáit.
-
Számháborút nyerne az Ulefone Armor 26 Ultra
ma 5G, IP68/69K, 120 Hz, 120 W, 121 dB, 200 MP, 512 GB, 15 600 mAh és walkie-talkie opció – csak néhány kulcsadat.
-
A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
it Egy felmérés szerint a legtöbb amerikai osztja azon véleményt, hogy a TikTok egy őket befolyásoló eszköz.
Új hozzászólás Aktív témák
-
Tomi_78
tag
válasz mgoogyi #4250 üzenetére
Most ilyen a fejléce a függvényemnek:
void __fastcall alakmozgatas(TObject *Sender)
a hívása pedig:alakmozgato->OnTimer=(TNotifyEvent) &alakmozgatas;
És mégis ezt a hibaüzenetet kapom:
[C++ Error] Unit1.cpp(90): E2031 Cannot cast from 'void (_fastcall *)(TObject *)' to 'void (_fastcall * (_closure )(TObject *))(TObject *)'De majd próbálok utánanézni, hogy az OnTimer milyen típust fogadhat.
-
Tomi_78
tag
Sziasztok!
Napok óta rágódom egy C++-os programrészleten, nevezetesen hogy van egy alak nevű osztály, aminek vannak egy tömbben tárolt alképei, és ezeket az alképeket kellene váltogatnia szabályos időközönként. De sajnos az alképek váltogatása valamiért nem működik. Talán már az alképek beolvasását és eltárolását sem jól oldottam meg? Valaki tud segíteni?
Íme a kód:#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
class egyalak
{
public:
egyalak(int px, int py, Graphics::TBitmap* kep)
{ x=px; y=py; kepe=kep;}
int x;
int y;
Graphics::TBitmap* kepe;
char alkepvaltoido;
char aktalkep;
char alkepdb;
};
Graphics::TBitmap *AlakokKepe = new Graphics::TBitmap;
egyalak *alakok[5];
TTimer *alakmozgato;
Graphics::TBitmap* kepei[4];
void __fastcall TForm1::alakmozgatas(TObject *Sender)
{
int i;
for (i=0; i<5; i++)
{
if (alakok[i]->alkepvaltoido>0)
{
alakok[i]->alkepvaltoido-=1;
}
else
{
if (alakok[i]->aktalkep+1<alakok[i]->alkepdb)
{
alakok[i]->aktalkep+=1;
}
else
{
alakok[i]->aktalkep=0;
}
if (alakok[i]->x+(AlakokKepe->Width)<Form1->Width)
{
alakok[i]->x+=8;
}
else
{
alakok[i]->x=-64;
alakok[i]->y=random(Form1->Height-64);
}
alakok[i]->alkepvaltoido=5;
}
alakok[i]->kepe=kepei[alakok[i]->aktalkep];
}
Invalidate();
}
//Ezeket kéne váltogatnia, ahogy lépked az alak:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AlakokKepe->LoadFromFile("alak\\alak_all.bmp");
kepei[0] = AlakokKepe;
kepei[2] = AlakokKepe;
AlakokKepe->LoadFromFile("alak\\alak_lep1.bmp");
kepei[1] = AlakokKepe;
AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
kepei[3] = AlakokKepe;
int i;
for (i=0; i<5; i++)
{
alakok[i]=new egyalak(4,i*AlakokKepe->Height+10,kepei[0]);
alakok[i]->alkepvaltoido=5;
alakok[i]->aktalkep=0;
alakok[i]->alkepdb=3;
}
alakmozgato=new TTimer(this);
alakmozgato->Interval=50;
alakmozgato->Enabled=true;
alakmozgato->OnTimer=alakmozgatas;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Kirajzol(TObject *Sender)
{
int i;
for (i=0; i<5; i++)
{
Canvas->Draw(alakok[i]->x,alakok[i]->y,alakok[i]->kepe);
}
} -
mgoogyi
senior tag
válasz Tomi_78 #4252 üzenetére
AlakokKepe->LoadFromFile("alak\\alak_all.bmp");
kepei[0] = AlakokKepe;
kepei[2] = AlakokKepe;
AlakokKepe->LoadFromFile("alak\\alak_lep1.bmp");
kepei[1] = AlakokKepe;
AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
kepei[3] = AlakokKepe;Anélkül, hogy érteném a teljes kódod, ez a rész biztosan rossz.
Az AlakokKepe egyetlen objektum pointere (memóriacíme).A memóriacím egy szám, ami eldől akkor, amikor a new neked helyet foglal a memóriában:
Graphics::TBitmap *AlakokKepe = new Graphics::TBitmap;
És innentől kezdve ez az érték nem változik.A kepei nevű ugyanilyen pointereket tároló tömbbe berakod ugyanazt a számértéket(pointert/memóriacímet) minden indexre.
Teljesen mindegy, hogy mit csinálsz közben a LoadFromFile függvénnyel.Az AlakokKepe változóra nincs szükséged. Első körben csináld azt, hogy minden alakok elemre ([0], [1], [2], stb.) a benne lévő kepe adattagot külön külön létrehozod
= new Graphics::TBitmap;
hívással és ezeken az alakok[ 0/1/2/.. ] . kepe objektumokon hívod meg a LoadFromFile-t.Azt is megeteheted, hogy nem pointert használsz:
Graphics::TBitmap* kepe;
->Graphics::TBitmap kepe;
és akkor nem kell new sem.[ Szerkesztve ]
-
-
dabadab
titán
válasz Tomi_78 #4256 üzenetére
Amit meg kell érteni jelen esetben az, hogy egyetlen darab AlakokKepe objektumod van és beállítottad azt, hogy mind a négy helyen erre az egyetlen egyre mutató link legyen.
A kód, amit írtál, pontosan azt csinálja, mintha ebben a sorrendbe írtad volna:
.
AlakokKepe->LoadFromFile("alak\\alak_all.bmp");
AlakokKepe->LoadFromFile("alak\\alak_lep1.bmp");
AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
kepei[0] = AlakokKepe;
kepei[2] = AlakokKepe;
kepei[1] = AlakokKepe;
kepei[3] = AlakokKepe;és ebből következően az, aminek igazából hatása van, csak annyi, hogy
.
AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
kepei[0] = AlakokKepe;
kepei[2] = AlakokKepe;
kepei[1] = AlakokKepe;
kepei[3] = AlakokKepe;[ Szerkesztve ]
DRM is theft
-
mgoogyi
senior tag
válasz Tomi_78 #4256 üzenetére
A pointernek és a LoadFromFile-nak nincs köze egymáshoz.
A pointer csak egy logikai memóriacím.A programod változói mind a memóriában vannak valahol.
Az, hogy valami hol van, azt elrakhatod egy pointerbe, mint pl. egy int * p;
Ebbe a p-be berakhatsz egy memóriacímet és utána azt tudod, hogy azon a memóriacímen - ami a p-ben van - van egy int értéked, azaz 4 byte-od egymás után.Az egyszerűség kedvéért 0-tól 1000-ig legyenek a lehetséges memóriacímek.
Amikor leírok egy olyat, hogy new int, akkor a programod a memóriából kér magának 4 byte-ot egymás után, ahol majd az integer-ed tartalma lesz és ebből a 4 byteből az elsőnek a címét visszaadja. (A másik 3 byte közvetlen utána van.)
Ezért tudod megtenni azt, hogy aint * p = new int;
esetén a baloldalt ott van a p, ami értéket kap. Mégpedig ennek az 1. byte-nak a memóriában lévő sorszámát.Itt egy példakód megdebuggolva:
A programom a (hexadecimális) 12461a8-as byte-tól kezdve kapott összesen 4 byte-ot.
És erre a 4 byte-ra a 3-nak megfelelő adat lett beírva.Ez így világos?
Olvasd el sokszor, ha nem érted, elég fontos, hogy ez meglegyen. -
Tomi_78
tag
Jupí, most már működik; lépegetnek az alakok a képernyő ablakában! Nagyon köszönöm nektek a segítséget, Mgoogyinak különösen!
Akkor, ha jól értelmezem, a mutató olyasmihoz hasonlítható, mint egy házszám, ami egy adott épületre mutat, mint helyre, a változó pedig az abban lakó személyre? Tehát ha arra vagyok kíváncsi, hogy hol van, akkor a mutatót használom, ha pedig magára az értékre, akkor a változónevet?[ Szerkesztve ]
-
Tomi_78
tag
És a C++-ban léteznek dinamikus tömbök, vagy a vektorok használatosak erre?
A kódomból a mostaniegyalak *alakok[5];
tömböt szeretném dinamikussá tenni, azaz hogy lehessen törölni belőle, illetve adott esetben hozzáadni újabb elemeket. De a mostani esetben ha az 5-öst egy változóra cserélném, akkor azt const típusúnak engedi a C++. -
dabadab
titán
-
Tomi_78
tag
válasz Silεncε #4262 üzenetére
Az nem baj, ha elem(ek) hozzáadása után több helyet foglal, hiszen ez természetes. Akkor tehát Dabadabbal a vector használatát javasoljátok? Úgy látom, ehhez vannak külön műveletek az elemek módosításához (törlés, hozzáadás, stb).
Sima tömbnél meg gondolom nekem kellene egy ciklussal a törölt elem utáni elemeket eggyel lejjebb rakosgatni, hozzáadni meg nem is tudnék(?). -
Tomi_78
tag
No még egy furcsa dolog, amibe beleütköztem C++ programozás közben: a saját függvény hívása.
Miért nem lehet azt csinálni, mint a példafeladatokban és leírásokban a könyvekben és a világhálón, hogy:
void függvénynév(paraméterek)
vagy
int függvénynév(paraméterek)
vagy
bool függvénynév(paraméterek)
stb.
és utána egyszerűen a függvénynév használatával hívni azt?
Ugyanis előző programomból kiszerveztem az alakok létrehozását egy függvénybe, mivel több helyen is kellene ugyanez:void __fastcall TForm1::alakcsinalas(TObject *Sender)
{
int i;
for (i=0; i<alakdb; i++)
{
alakok[i]=new egyalak(4,i*kepei[0]->Height*2,kepei[0]);
alakok[i]->alkepvaltoido=5;
alakok[i]->aktalkep=0;
alakok[i]->alkepdb=3;
alakok[i]->sebessege=as;
}
}
aztán ha hívnám valahol ezt a függvényt a nevével:
alakcsinalas;
akkor ezt a hibát kapom:
E2235 Member function must be called or its address taken
Utánanéztem, hogy ez mit jelent, és azt láttam, hogy egy & jel hiányzik előle ([link]).
Nosza, elé is raktam, így meg valami EAccesViolation hibát kaptam. Na most akkor valami baj van a függvényemmel? Az Unit1.h-ban is deklarálva van pedig.
A másik, hogy miért van szükség egy saját függvénynél a TForm1:: és (TObject *Sender) kiegészítésekre? Ez a C++ Builder sajátossága, és egy olyan fejlesztőeszköznél, ami konzolos, mint pl. a Code:locks, ott erre nincs szükség, hanem simán a void név(paraméterek) alak a használatos? -
Tomi_78
tag
válasz mgoogyi #4267 üzenetére
Nem, a Unt1.h-ban ez a fejléc:
void __fastcall alakcsinalas(TObject *Sender);
De itt az egész kódom, talán még nem olyan nagy annyira, hogy ne tegyem itt közzé:#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
class egyalak
{
public:
egyalak(int px, int py, Graphics::TBitmap* kep)
{ x=px; y=py; kepe=kep;}
int x;
int y;
Graphics::TBitmap* kepe;
unsigned char alkepvaltoido; //0-255
unsigned char aktalkep;
unsigned char alkepdb;
unsigned char sebessege;
};
const int maxalakdb = 5;
egyalak *alakok[maxalakdb];
int alakdb = maxalakdb;
TTimer *alakmozgato;
Graphics::TBitmap* kepei[4];
int pontok = 0;
unsigned char as = 32;
unsigned char th = 1;
void __fastcall TForm1::alakcsinalas(TObject *Sender)
{
int i;
for (i=0; i<alakdb; i++)
{
alakok[i]=new egyalak(4,i*kepei[0]->Height*2,kepei[0]);
alakok[i]->alkepvaltoido=5;
alakok[i]->aktalkep=0;
alakok[i]->alkepdb=3;
alakok[i]->sebessege=as;
}
}
void __fastcall TForm1::alakmozgatas(TObject *Sender)
{
int i;
for (i=0; i<alakdb; i++)
{
if (alakok[i]->alkepvaltoido>0)
{
alakok[i]->alkepvaltoido-=1;
}
else
{
if (alakok[i]->aktalkep+1<=alakok[i]->alkepdb)
{
alakok[i]->aktalkep+=1;
}
else
{
alakok[i]->aktalkep=0;
}
if (alakok[i]->x+(kepei[0]->Width)<Form1->Width)
{
alakok[i]->x+=alakok[i]->sebessege;
}
else
{
delete alakok[i];
if (i<alakdb)
{
int j;
for (j=i+1; j<alakdb; j++)
{
alakok[i]=alakok[j];
}
};
alakdb-=1;
if (alakdb<1)
{
if (as+4<255)
{
as+=4;
}
&alakcsinalas;
};
}
alakok[i]->alkepvaltoido=5;
}
alakok[i]->kepe=kepei[alakok[i]->aktalkep];
}
Invalidate();
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
kepei[0] = new Graphics::TBitmap;
kepei[0]->LoadFromFile("alak\\alak_all.bmp");
kepei[0]->Transparent=true;
kepei[2] = new Graphics::TBitmap;
kepei[2]->LoadFromFile("alak\\alak_all.bmp");
kepei[2]->Transparent=true;
kepei[1] = new Graphics::TBitmap;
kepei[1]->LoadFromFile("alak\\alak_lep1.bmp");
kepei[1]->Transparent=true;
kepei[3] = new Graphics::TBitmap;
kepei[3]->LoadFromFile("alak\\alak_lep2.bmp");
kepei[3]->Transparent=true;
&alakcsinalas;
alakmozgato=new TTimer(this); //Időzítő létrehozása
alakmozgato->Interval=50; //Időtartam beállítása
alakmozgato->Enabled=true;
alakmozgato->OnTimer=alakmozgatas; //Ez történjen, ha lefutott.
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Kirajzol(TObject *Sender)
{
TPoint p = Form1->ScreenToClient(Mouse->CursorPos);
int i;
for (i=0; i<alakdb; i++)
{
if (GetAsyncKeyState(VK_LBUTTON) && p.x>=alakok[i]->x && p.x<=alakok[i]->x+kepei[0]->Width && p.y>=alakok[i]->y && p.y<=alakok[i]->y+kepei[0]->Height)
{
pontok+=1;
delete alakok[i];
if (i<alakdb)
{
int j;
for (j=i+1; j<alakdb; j++)
{
alakok[i]=alakok[j];
}
};
alakdb-=1;
}
Canvas->Draw(alakok[i]->x,alakok[i]->y,alakok[i]->kepe);
}
Form1->Caption = "Alakok: "+IntToStr(alakdb)+" - Pontjaid: "+IntToStr(pontok)+" - Támadóhullám: "+IntToStr(th);
} -
Tomi_78
tag
válasz dabadab #4270 üzenetére
Na szóval: a fejléc most már így néz ki, mivel nekem nem kell semmilyen paraméter:
void __fastcall alakcsinalas()
Ezek után ha nincs () a függvényhívás után, tehát sima alakcsinalas; akkor a hiba:
[C++ Error] Unit1.cpp(95): E2235 Member function must be called or its address taken
ha meg van () utána, tehát alakcsinalas();, akkor a hiba:
[Linker Error] Unresolved external '__fastcall TForm1::alakcsinalas()' referenced from F:\PROGSETUP\BCB6\BCBPROGIJAIM\ALAKMEGY\UNIT1.OBJ -
Tomi_78
tag
Némi haladás:
függvény fejléce: void alakcsinalas()
függvény hívása: alakcsinalas();
függvény deklarációja az Unit1.h-ban: nincs.
Eredmény: program elindul, alakok végigmasíroznak a képernyőn, de másodjára már nem fut le az őket létrehozó függvény, ami az alakmozgatas() függvényen belül van.
Izgi! -
Tomi_78
tag
Sziasztok!
Code:locks C++-ban az időzítővel (Timer) van egy problémám:
Megadom a változóit:UINT idozito;
UINT_PTR idozito1;
majd az ablak WM_CREATE-jében létrehozom az időzítőt:idozito = SetTimer(hwnd,idozito1,100,(TIMERPROC)NULL);
és itt futna le az időzítő:case WM_TIMER:
switch (wParam)
{
case idozito1:
//csinál valamit
break;
}
break;
Viszont ezt a hibaüzenetet kapom az idozito1-gyel kapcsolatban:
error: 'idozito1' cannot appear in a constant-expression|
És nem tudom, hogy ezzel az idozito1-gyel most mit kezdjek, ugyanis innen:
[link] sem tudtam kihámozni semmi érdemlegeset, hogy az időzítő azonosítót, ami ez az idozito1 lenne, hol és milyen típusként kell megadni.
Valaki tud nekem segíteni? -
dabadab
titán
válasz Tomi_78 #4276 üzenetére
"UINT_PTR idozito1;"
Az a helyzet, hogy a SetTimer() signature-je teljesen el van cseszve, ennek nem UINT_PTR-nek, hanem simán uintnek kellene lennie. A SetTimer() második paraméternek egy azonosítószámot vár, adj neki azt.
A case meg azért nem működik, mert fordításkor tudnia kell a fordítónak, hogy annak a case-nek mi lesz a konkrét értéke - az meg változókkal nem megy.
Szóval kb ez kell neked (fejből, nem próbáltam ki):
const unsigned int TIMER_ID=0x12345;
idozito = SetTimer(hwnd, TIMER_ID, 100, NULL);
case WM_TIMER:
switch (wParam)
{
case TIMER_ID:
//csinál valamit
break;
}
break[ Szerkesztve ]
DRM is theft
-
Tomi_78
tag
válasz dabadab #4277 üzenetére
Köszönöm a választ; működött a módszered.
Amúgy én is találtam egy másik megoldást (internetről puskázva), mégpedig hogy ezzel a sorral egészítettem ki a programomat az elején:#define idozito1 1001
Bár nem értem, hogy ez miért jó? Egyenértékű lenne a tiéddel ( const unsigned int idozito1=0x12345; )? -
Silεncε
őstag
válasz Tomi_78 #4278 üzenetére
Ilyen esetben mindkettőt (konstans változó/define) szokás használni, mindkettőnek az lesz a végeredménye, hogy a korábban megadott szám fog bekerülni a paraméterlistába. A különbség az, hogy hogyan: a const int egy változó, ami konstans (futásidő), a #define ezzel ellentétben a preprocessornak szóló makró, így ő fordítási időben fog működni: a preprocessor megtalálja jelen esetben az idozito1 szoveget a forrásban, akkor oda simán beilleszti a korábban a #define-ban megadott stringet (ő simán stingcopyt végez a forrásban).
Az hogy melyiket érdemes használni, konvenciófüggő, én C++-ban inkább a const-ot szoktam.
[ Szerkesztve ]
-
dabadab
titán
válasz Tomi_78 #4278 üzenetére
A C++ tulajdonképpen két nyelv egyben: egyrészt ott van benne a C, amit mindenestül átvett, másrészt meg ott van benne a C++, ami az elején egy elég szerény OO-s kiegészítés volt, de már már tulajdonképpen az is szinte teljes nyelvvé nőtte ki magát, ennek eredményeképpen C++-ban egy csomó dolgot meg lehet csinálni C-ben meg C++-ban is (és persze ha lehet, akkor inkább az utóbbit jó használni.)
Ez egy ilyen: a konstansok kezelésére a #define a C-s megoldás, a const int meg a C++-os.
(#4279) Silεncε: a const int is compile time, különben nem menne vele a switch / case
[ Szerkesztve ]
DRM is theft
-
Tomi_78
tag
Köszi nektek!
Még egy kérdésem volna: egy képecskét szeretnék kirajzolni, áttetsző háttérrel, tehát hogy az a szín ne látszódjon. Ezt a következőképpen csinálnám:BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
AlphaBlend(hdc, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, hdcMem, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, pixelblend);
De erre azt írja ki a Code:locks, hogy:
error: 'AlphaBlend' was not declared in this scope
Ez miért van? Külön deklarálnom kéne még az AlphaBlend függvényt? -
ToMmY_hun
senior tag
Sziasztok!
Úgy tudom vannak itt néhányan, akik a budapesti Morgan Stanley-nél dolgoznak. Valakivel felvehetném privátban a kapcsolatot? Szeretnék feltenni néhány kérdést a céggel kapcsolatban.
Előre is köszönöm, ha valaki segít. :)
C programmers never die, they are just cast into void.
-
-
Rula
tag
Sziasztok!
Kezdő kérdésem lenne. (Remélem legalább azt eltaláltam, hogy ez C++, nem sima C )
Szeretnék egy olyan (hátul tesztelő) ciklust létrehozni, ami akkor lép ki, hogy ha az user beírja, hogy "end". Viszont nem igazán sikerül.#include <iostream>
int main()
{
setlocale(LC_ALL, "");
char kar[80];
do {
printf("írjon be valamit:\n");
scanf("%s", kar);
} while (kar != "end");
}
Előre is köszi a segítséget! (Nem igazán sikerült normálisan formázni, bocsi )
[ Szerkesztve ]
-
Rula
tag
Sziasztok!
[EZT] a kódot próbálom használni. Viszont az pont nincs benne, hogy hogyan is lehetne a stackból kiszedni az adatokat. Próbálkoztam ugyebár azzal, hogy cout << s.top();, de hibát kapok.
(no operator "<<" matches these operands operand types are: std::ostream << node)Valószínüleg rosszul kerestem rá, de nem igazán tudom, hogy hogy is lehetne adatot kinyerni akkor, hogyha a stack<X> s, X helyén int helyett egy class név található ( gondolom az a legfőbb gond).
-
dangerzone
addikt
Sziasztok!
A következő kódot szeretném futtatni a codeblocks-ban:
#include <string>
std::string countSheep(int number)
{
std::string res;
std::string s = " sheep...";
for (int i = 1; i <= number; i++) {
res += std::to_string(i) + s;
}
return res;
}De a következő hibaüzenetet kaptam: to_string’ is not a member of ‘std
Egy kis utánaolvasás után frissítettem a gcc compiler-t a gépemen, most a 9.2.0-ás verzió van, viszont továbbra is hibaüzenetet kapok. Most a "undefined reference to 'WinMain@16' üzenet jön fel , a program pedig nem fut le.
Van esetleg valamit ötletetek, hogy mit lehetne tenni?!
-
Silεncε
őstag
válasz dangerzone #4293 üzenetére
Minden C++ kód kötelező eleme egy main függvény, ez a program belépési pontja (jó, meg lehet hackelni, hogy ne main legyen, de azt most hagyjuk. Ez így nem fog fordulni, mert nincs main függvényed. Valami hasonlót csinálj:
int main() {
countSheep(bármilyen szám);
return 0;
}[ Szerkesztve ]
-
cattus
őstag
válasz dangerzone #4295 üzenetére
Azért, mert a CodeWars az általad megírt kódot fogja, és belerakja egy saját futtatókörnyezetbe (ahol már van main függvény).
Do the thing!
-
Silεncε
őstag
válasz dangerzone #4295 üzenetére
Ahogy cattus is mondja, ott van egy csomó kód amit nem látsz (az inputok beolvasasa, az outputok kiértékelése stb.., ezekhez pedig van main)
-
dangerzone
addikt
Így már érthető! Köszönöm szépen!
-
Tomi_78
tag
Sziasztok!
Code: locks-ban írogatok egy kis programot, amiben egy labda pattog. Ez meg is volna, de nem tudom ezt a bitmap képet áttetszővé tenni, ahol nem szükséges a háttér kirajzolása.
Van erre valami függvény vagy ez csak maszk használatával oldható meg?
Azért kérdezem, mert van, ahol az olvasható, hogy létezik erre a MakeTransparent függvény is, csak nem tudom használni. Itt:
https://apireference.aspose.com/barcode/cpp/class/system.drawing.bitmap
ez olvasható:
"System::Drawing::Bitmap::MakeTransparent(Color transparent_color =Color::get_LightGray()
)"
De C++-ban ha jól tudom, nincs olyan, hogy "System" névtér. Vagy ez mégis csak C#-ra vonatkozik? -
Silεncε
őstag
válasz Tomi_78 #4299 üzenetére
Neked egy Bitmap típusú objektum kell, annak lesz egy olyan metódusa hogy MakeTransparent, amit a doksiban látható módon tudsz paraméterezni.
Névtérből alapvetően tényleg nincs System definiálva, de magadnak olyan nevűt hozol létre, amilyet szeretnél, itt a könyvtár írói definiálták (illetve a System itt se névtér, hanem Class, de ilyen szempontból hasonlóan működnek, de egyébként különböző a két dolog!)
[ Szerkesztve ]
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Xiaomi Redmi Note 11 Pro 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Eladó gamer PC (i5-11400F/16GB DDR4/500GB SSD+1TB HDD/RTX 2060 6GB)
- Bomba ár! Lenovo ThinkPad X270 - i7-7G I 16GB I 256GB SSD I 12,5" I HDMI I Cam I W10 I Garancia!
- Bomba ár HP Spectre Pro X360 G2 - i5-6G I 8GB I 256SSD I 13,3" FHD Touch I Cam I W10 I Garancia!
- DELL OPTIPLEX 3020 - i5/8GB/256GB/GT710