C++ -kysymykset

Muu yhteisön välinen keskustelu.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

Kellään mitään aavistusta miten olen onnistunut saamaan Animaattorin kaatumaan, kun käytetään "new" avainsanaa... Jotenkin se liittyy uuteen viivatyökaluun jota olen tekemässä, sillä ongelma ilmenee, kun alan siirtämään yhtä viivan pistettä hiirellä. Sitten ohjelma kaatuu, kun kutsutaan QPainter::beginiä ja debuggerin mukaan kaatuminen tapahtuu "new" avainsanaa käytettäessä!!! Miten ihmeessä tämä nyt on mahdollista. Tässä on disassemplerin avulla saatu kohta johon ohjelma pysähtyy.(jokin debuggerin tarkistus rutiini?)

Code: Select all

775d045c <ntdll!RtlpBreakPointHeap+4> 8b4030 mov eax,dword ptr [eax+30h]
775d045f <ntdll!RtlpBreakPointHeap+5> 80780200 cmp byte ptr [eax+2],0
775d0463 <ntdll!RtlpBreakPointHeap+6> 7417 je ntdll!RtlpBreakPointHeap+0x2b (775d047c)
775d0465 <ntdll!RtlpBreakPointHeap+7> 8b4508 mov eax,dword ptr [ebp+8]
775d0468 <ntdll!RtlpBreakPointHeap+8> c6052582607701 mov byte ptr [ntdll!RtlpHeapInvalidBreakPoint (77608225)],1
775d046f <ntdll!RtlpBreakPointHeap+9> a320826077 mov dword ptr [ntdll!RtlpHeapInvalidBadAddress (77608220)],eax
775d0474 <ntdll!RtlpBreakPointHeap+10> cc int 3
Kohta jossa new:tä kutsutaan ja se kaatuu, tuntuu vaihtelevan. Yleensä se tuntuu olevan LineTool::paint -> QPainter::begin -> new QRasterPaintEngine, mutta äskön se kaatui QRenderThread::render -> QPainter::beginin jälkeen (en enää muista mitä luotiin, mutta ei ollut QRasterPaintEngine). Aina kuitenkin kaatuminen tapahtuu QPainter::beginissä. Kaatuminen ei johdu nyt kyllä vääristä parametreistä sillä tuossa kutsutaan QRasterPaintEnginen vakio konstruktoria eikä sillä ole parametrejä ja kaatuminen tapahtuu "new":n kutsumassa "allocissa". Mutta miten olen saannut "new":n kaatumaan? :oops:
EDIT:

Näköjään myös malloc kaatuu, joskus tuossa kohti...

Last edited by Latexi95 on Thu May 19, 2011 3:18 pm, edited 1 time in total.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

Feuer wrote:

Code: Select all

cpp koodia
Ohjelma huutaa "Framen leikkaus epäonnistui" - virsettä, ja tappaa itsensä aina väkivaltaisesti. SDL_BlitSurface()ssa siis tapahtuu jotain häröä, näkeekö kukaan tuossa mitään huonoja parametreja jotka sotkisivat sen toimintaa vai liekö ongelma jossain syvemmällä projektissa?
Yritätkö tehdä jotain animaatio kuva härveliä?
Tässä on jonkinmoinen väsäys jonka tein tilemappi jutskaani varten:

Code: Select all

//Alkumäärittelyt:
struct ANIMIMAGES{
    SDL_Surface** img;
    int frames;

    public:

    void ANIMIMAGES::LoadAnimImage(string file, int framew, int frameh, int maskr, int maskg, int maskb);
    void DrawAnimImage(int frame, SDL_Surface* buf, int x, int y);
    void ClearAnimImages();
};
void DrawImage(SDL_Surface *img, SDL_Surface *screen, int x, int y, int startx, int starty, int w, int h);



void ANIMIMAGES::LoadAnimImage(string file, int framew, int frameh, int maskr, int maskg, int maskb){
    SDL_Surface* tmp = SDL_LoadBMP(file.c_str());
    if(tmp != NULL){

        int x, y, position;
        int framecountx, framecounty;

        framecountx = tmp->w / framew;
        framecounty = tmp->h / frameh;

        frames = framecountx*framecounty;
        img = new SDL_Surface*[framecountx*framecounty];

        for(y = 0; y <= framecounty; y++){
            for(x = 0; x <= framecountx; x++){
                position = y * framecountx + x;
                img[position] = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);
                SDL_SetColorKey(img[position], SDL_SRCCOLORKEY, SDL_MapRGB(img[position] -> format, maskr, maskg, maskb));
                DrawImage(tmp, img[position], 0, 0, x*32, y*32, 32, 32);
            }
        }
    }
}

void DrawImage(SDL_Surface *img, SDL_Surface *screen, int x, int y, int startx, int starty, int w, int h){
    SDL_Rect dest;
    dest.x = x;
    dest.y = y;

    SDL_Rect imgarea;
    imgarea.x = startx;
    imgarea.y = starty;
    imgarea.w = w;
    imgarea.h = h;

    SDL_BlitSurface(img, &imgarea, screen, &dest);
}
Koodissa ei ole sitten mitään "turvatarkistuksia" eli jos laittelet parametrejä vähän huolimattomasti, koko homma voi jäätyä. :D

Ai niin, tarvittavat includet:

Code: Select all

#include <SDL.h>
#include <string>
#include <iostream>
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

Joo, minulla on tilemap- ja animaatiomoottorit (+kartanteko-ohjelma) työn alla erästä projektia varten. Tuossa ylempänä oli ongelmana se, että yritin blitata 32-bittiseltä pinnalta 0-bittiselle pinnalle. Eli ongelma on jo mennyttä.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

Latexi95 wrote:Kellään mitään aavistusta miten olen onnistunut saamaan Animaattorin kaatumaan, kun käytetään "new" avainsanaa... Jotenkin se liittyy uuteen viivatyökaluun jota olen tekemässä, sillä ongelma ilmenee, kun alan siirtämään yhtä viivan pistettä hiirellä. Sitten ohjelma kaatuu, kun kutsutaan QPainter::beginiä ja debuggerin mukaan kaatuminen tapahtuu "new" avainsanaa käytettäessä!!! Miten ihmeessä tämä nyt on mahdollista. Tässä on disassemplerin avulla saatu kohta johon ohjelma pysähtyy.(jokin debuggerin tarkistus rutiini?)

Code: Select all

775d045c <ntdll!RtlpBreakPointHeap+4> 8b4030 mov eax,dword ptr [eax+30h]
775d045f <ntdll!RtlpBreakPointHeap+5> 80780200 cmp byte ptr [eax+2],0
775d0463 <ntdll!RtlpBreakPointHeap+6> 7417 je ntdll!RtlpBreakPointHeap+0x2b (775d047c)
775d0465 <ntdll!RtlpBreakPointHeap+7> 8b4508 mov eax,dword ptr [ebp+8]
775d0468 <ntdll!RtlpBreakPointHeap+8> c6052582607701 mov byte ptr [ntdll!RtlpHeapInvalidBreakPoint (77608225)],1
775d046f <ntdll!RtlpBreakPointHeap+9> a320826077 mov dword ptr [ntdll!RtlpHeapInvalidBadAddress (77608220)],eax
775d0474 <ntdll!RtlpBreakPointHeap+10> cc int 3
Kohta jossa new:tä kutsutaan ja se kaatuu, tuntuu vaihtelevan. Yleensä se tuntuu olevan LineTool::paint -> QPainter::begin -> new QRasterPaintEngine, mutta äskön se kaatui QRenderThread::render -> QPainter::beginin jälkeen (en enää muista mitä luotiin, mutta ei ollut QRasterPaintEngine). Aina kuitenkin kaatuminen tapahtuu QPainter::beginissä. Kaatuminen ei johdu nyt kyllä vääristä parametreistä sillä tuossa kutsutaan QRasterPaintEnginen vakio konstruktoria eikä sillä ole parametrejä ja kaatuminen tapahtuu "new":n kutsumassa "allocissa". Mutta miten olen saannut "new":n kaatumaan? :oops:
EDIT:

Näköjään myös malloc kaatuu, joskus tuossa kohti...

Kellään mitään tietoa tästä? Aivan omituinen ongelma... Eihän "new" kai voi kaatua muuten kuin jos on liian vähän muistia (jolloin heittää errorin tai palauttaa 0:llan). Mutta nyt debuggeri vaan tuntuu juuttuvan tuohon muistin varaukseen. Jos debuggeria ei käytä niin tulee vain perinteinen "Animaattori 3 lakkasi toimimasta". Jos post-mortem debuggaa niin silloinkin se ilmoittaa tuon "new":n... Ihan käsittämätöntä... Miten ihmeessä viivatyökalu voi saada muistin varauksen täysin sekaisin.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: C++ -kysymykset

Post by valscion »

Latexi95 wrote:
Latexi95 wrote:Kellään mitään aavistusta miten olen onnistunut saamaan Animaattorin kaatumaan, kun käytetään "new" avainsanaa... Jotenkin se liittyy uuteen viivatyökaluun jota olen tekemässä, sillä ongelma ilmenee, kun alan siirtämään yhtä viivan pistettä hiirellä. Sitten ohjelma kaatuu, kun kutsutaan QPainter::beginiä ja debuggerin mukaan kaatuminen tapahtuu "new" avainsanaa käytettäessä!!! Miten ihmeessä tämä nyt on mahdollista. Tässä on disassemplerin avulla saatu kohta johon ohjelma pysähtyy.(jokin debuggerin tarkistus rutiini?)

Code: Select all

775d045c <ntdll!RtlpBreakPointHeap+4> 8b4030 mov eax,dword ptr [eax+30h]
775d045f <ntdll!RtlpBreakPointHeap+5> 80780200 cmp byte ptr [eax+2],0
775d0463 <ntdll!RtlpBreakPointHeap+6> 7417 je ntdll!RtlpBreakPointHeap+0x2b (775d047c)
775d0465 <ntdll!RtlpBreakPointHeap+7> 8b4508 mov eax,dword ptr [ebp+8]
775d0468 <ntdll!RtlpBreakPointHeap+8> c6052582607701 mov byte ptr [ntdll!RtlpHeapInvalidBreakPoint (77608225)],1
775d046f <ntdll!RtlpBreakPointHeap+9> a320826077 mov dword ptr [ntdll!RtlpHeapInvalidBadAddress (77608220)],eax
775d0474 <ntdll!RtlpBreakPointHeap+10> cc int 3
Kohta jossa new:tä kutsutaan ja se kaatuu, tuntuu vaihtelevan. Yleensä se tuntuu olevan LineTool::paint -> QPainter::begin -> new QRasterPaintEngine, mutta äskön se kaatui QRenderThread::render -> QPainter::beginin jälkeen (en enää muista mitä luotiin, mutta ei ollut QRasterPaintEngine). Aina kuitenkin kaatuminen tapahtuu QPainter::beginissä. Kaatuminen ei johdu nyt kyllä vääristä parametreistä sillä tuossa kutsutaan QRasterPaintEnginen vakio konstruktoria eikä sillä ole parametrejä ja kaatuminen tapahtuu "new":n kutsumassa "allocissa". Mutta miten olen saannut "new":n kaatumaan? :oops:
EDIT:

Näköjään myös malloc kaatuu, joskus tuossa kohti...

Kellään mitään tietoa tästä? Aivan omituinen ongelma... Eihän "new" kai voi kaatua muuten kuin jos on liian vähän muistia (jolloin heittää errorin tai palauttaa 0:llan). Mutta nyt debuggeri vaan tuntuu juuttuvan tuohon muistin varaukseen. Jos debuggeria ei käytä niin tulee vain perinteinen "Animaattori 3 lakkasi toimimasta". Jos post-mortem debuggaa niin silloinkin se ilmoittaa tuon "new":n... Ihan käsittämätöntä... Miten ihmeessä viivatyökalu voi saada muistin varauksen täysin sekaisin.
Oletko kokeillut käyttää pelkän new:n sijaan QPointer luokkaa apunasi? Lueskelin vain randomeja google-hakuja joten en osaa oikeen mitään asiantuntevaa auttaa. Kokeile, josko tämän linkin juttu auttaisi jotain...

Eikä sitten tarvitse viisastella jos vinkki on ihan puuta heinää. Sentään edes yritän auttaa :)
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

VesQ wrote: Oletko kokeillut käyttää pelkän new:n sijaan QPointer luokkaa apunasi? Lueskelin vain randomeja google-hakuja joten en osaa oikeen mitään asiantuntevaa auttaa. Kokeile, josko tämän linkin juttu auttaisi jotain...

Eikä sitten tarvitse viisastella jos vinkki on ihan puuta heinää. Sentään edes yritän auttaa :)
Eipä tuosta linkistä hirveämmin apua ollut, mutta kiitos kuitenkin. En voi käyttää QPointeria, kun tuo kaatumisen aiheuttava new on qt:n koodissa(jossain QPainterin sisällä).
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

Latexi95 wrote:tuo kaatumisen aiheuttava new on qt:n koodissa(jossain QPainterin sisällä).
Sitten teet jotain väärin. Pistä sorsat näkyville.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

esa94 wrote: Sitten teet jotain väärin.
Ihanko totta?

Jes... Vihdoin löysin virheen. Ilmeisesti jossain vaiheessa muutin muuttujaa joka osoitti väärään paikkaan ja muutti sitten jotain muuta muuttujaa joka aiheutti virheen... Huoh... Kylläpä oli hankala löydettävä. Muutin hieman viivatyökalun rakennetta niin alkoi toimimaan. :D
Mutta kiitos kaikista auttamisyrityksistä. (ei tarkoita sinua esa...)
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: C++ -kysymykset

Post by KilledWhale »

Latexi95 wrote:
esa94 wrote: Sitten teet jotain väärin.
Ihanko totta?

Jes... Vihdoin löysin virheen. Ilmeisesti jossain vaiheessa muutin muuttujaa joka osoitti väärään paikkaan ja muutti sitten jotain muuta muuttujaa joka aiheutti virheen... Huoh... Kylläpä oli hankala löydettävä. Muutin hieman viivatyökalun rakennetta niin alkoi toimimaan. :D
Mutta kiitos kaikista auttamisyrityksistä. (ei tarkoita sinua esa...)
Jos sinulla on jokin linux-jakelu käytettävissäsi niin projektien debuggausta voi helpottaa paljonkin. Muistaa vain kääntää -g lipulla ja sitten lätkii softaa turpaan Valgrindilla tai GDB:llä. Virheenaiheuttajat löytyvät yleensä rivin tarkkuudella ja lisäksi Valgrindi kertoo erittäinkin tarkasti jos jotain muistia unohtuu vapauttaa.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

KilledWhale wrote: Jos sinulla on jokin linux-jakelu käytettävissäsi niin projektien debuggausta voi helpottaa paljonkin. Muistaa vain kääntää -g lipulla ja sitten lätkii softaa turpaan Valgrindilla tai GDB:llä. Virheenaiheuttajat löytyvät yleensä rivin tarkkuudella ja lisäksi Valgrindi kertoo erittäinkin tarkasti jos jotain muistia unohtuu vapauttaa.
Kiitos vinkistä. Pitääpä kokeilla jossain vaiheessa, jos tarvetta ilmenee.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

KilledWhale wrote:ja lisäksi Valgrindi kertoo erittäinkin tarkasti jos jotain muistia unohtuu vapauttaa.
Esimerkki: Shelli kertoo 'Segmentation fault'

Valgrind kertoo millä rivillä/b] se tapahtuu.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Onko Visual c++ expressissä 3d-objekteihin, ääniin, törmäyksentunnistuksiin tms. pelijuttuihin include-filut? Entä millä nimellä ne on? Vai pitääkö ladata jostain muualta?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

Kaikki on kiinni siitä mitä 3D-moottoria käytät, mitä kirjastoa käytät ja kuinka laaja ko. kirjasto on. On olemassa kirjastoja jotka tarjoaa pelkän pohjan 3D:lle (esim. pelkkä OpenGL, ja tietääkseni DirectX) kun taas osa tarjoaa pohjan jonka päälle on helpompi rakentaa pelimoottori (esim. Irrlicht tai Ogre ja noi käyttää omana alustanaan OpenGL:ää/DirectX:ää).

Sinällään C++ ei tarjoa mitään komentoja tai helppokäyttötoimintoja, jolla saa pelejä aikaseksi, vaan kaikki pitää tehdä käyttäen apukirjastoja. Jo kääntäjien mukana tulevat standardikirjastot ovat sellaisia.

Suosittelen mieluummin tutustumista 2D-kirjastoihin ensin kerta näyttää olevan C++ vielä aika hukassa. Mainitsemani SFML on erinomainen alusta aloittaa pelienteon harjottelu. Sekin käyttää alustanaan OpenGL:ää, mutta kirjaston avulla voi tehdä vain 2D-pelejä. SFML:llä kuitenkin voi luoda myös ikkunan jossa voi käyttää OpenGL:n komentoja suoraan ja siten mahdollista tehdä myös 3D:tä.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

temu92 wrote:Kaikki on kiinni siitä mitä 3D-moottoria käytät, mitä kirjastoa käytät ja kuinka laaja ko. kirjasto on. On olemassa kirjastoja jotka tarjoaa pelkän pohjan 3D:lle (esim. pelkkä OpenGL, ja tietääkseni DirectX) kun taas osa tarjoaa pohjan jonka päälle on helpompi rakentaa pelimoottori (esim. Irrlicht tai Ogre ja noi käyttää omana alustanaan OpenGL:ää/DirectX:ää).

Sinällään C++ ei tarjoa mitään komentoja tai helppokäyttötoimintoja, jolla saa pelejä aikaseksi, vaan kaikki pitää tehdä käyttäen apukirjastoja. Jo kääntäjien mukana tulevat standardikirjastot ovat sellaisia.

Suosittelen mieluummin tutustumista 2D-kirjastoihin ensin kerta näyttää olevan C++ vielä aika hukassa. Mainitsemani SFML on erinomainen alusta aloittaa pelienteon harjottelu. Sekin käyttää alustanaan OpenGL:ää, mutta kirjaston avulla voi tehdä vain 2D-pelejä. SFML:llä kuitenkin voi luoda myös ikkunan jossa voi käyttää OpenGL:n komentoja suoraan ja siten mahdollista tehdä myös 3D:tä.
Kiitos paljon! Asensin tuon SFML:än ja nyt tuli ongelma eteen, linkittäjä tjsp. heittää tällaista:

Code: Select all

1>------ Build started: Project: sfml test, Configuration: Debug Win32 ------
1>  main.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(10): error C2870: 'std' : a namespace definition must appear either at file scope or immediately within another namespace definition
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(25): error C2146: syntax error : missing ';' before identifier 'cin'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(26): error C2146: syntax error : missing ';' before identifier 'cout'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(26): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(26): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(26): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(27): error C2146: syntax error : missing ';' before identifier 'cerr'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(28): error C2146: syntax error : missing ';' before identifier 'clog'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(28): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(28): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(28): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(30): error C2146: syntax error : missing ';' before identifier 'wcin'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(31): error C2146: syntax error : missing ';' before identifier 'wcout'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(32): error C2146: syntax error : missing ';' before identifier 'wcerr'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(33): error C2146: syntax error : missing ';' before identifier 'wclog'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(33): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(33): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(33): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(41): error C2071: 'std::_Winit::_Init_cnt' : illegal storage class
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iostream(41): error C2246: 'std::_Winit::_Init_cnt' : illegal static data member in locally defined class
1>main.cpp(33): fatal error C1075: end of file found before the left brace '{' at 'main.cpp(5)' was matched
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Ja asensin kaiken täsmälleen sivuston ohjeiden mukaisesti. johtuisiko siitä että minulla on VC 2010 ja ohjeet ja kirjasto on 2008-versiolle..?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

Aijaa tämmöinenkin topikki oli, sori tuosta esimerkki juttuun kysymysten postauksesta. :)
Onko string kirjastossa tämä string luokka vai joku muu? Struktuuri? Ajattelin vain että mitenkä luokille voi asettaa dataa yhtäkuin merkin jälkeen? :) Osaan kyllä käyttää konstruktoria, mutta yhtäkuin merkin jälkeinen datan asetus tuntuu vain paremmalta määrittelytavalta. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja »

Ylikuormittamalla =-operaattorin, eli määrittelet operator= -nimisen funktion, jolle annetaan yksi parametri joka on käytettäessä =-merkin jälkeinen muuttuja. Ylipäänsä tämä on kuitenkin hyödyltänsä kyseenalaista, koska harvemmalla luokalla on vain yhtä määritelmällistä muuttujaa, johon haluaisit =-merkin käytön sitoa.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

Juu, ajattelin vain tehdä paremman tekstiluokan, joka tukisi myös numeroita tyyliin kuin CoolBasic:sa... :) Koska on numeroitahan ei saa string muuttujalle lisättyä muuten kuin osstreamin kautta.. :/ Ja sitten nämä numerot pitää insertata.. Ja se on turhan epäkelpo tie mitä haen..
EDIT:

Ja kuinkas sitten toimia, kun pitää palauttaa suoraan tekstiä objektista, eikä objektin funktion kautta?

Code: Select all

str nimi = "hei olen MaGetzUb";
nimi = nimi+' '+2.675
cout<<nimi<<endl; 
[/edit]
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: C++ -kysymykset

Post by Feuer »

MaGetzUb wrote:Juu, ajattelin vain tehdä paremman tekstiluokan, joka tukisi myös numeroita tyyliin kuin CoolBasic:sa... :)
Siitä on pari kuukautta kun olen viimeksi C++aa harrastanut, mutta eikös tuossa riitä, että perit std::stringin ja kirjoitat sille tarvittavat uudet ominaisuudet? Ellei tietysti projektin tarkoituksena juuri ole ymmärtää stringien sielunelämää tarkemmin :P
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: C++ -kysymykset

Post by Dimple »

naputtelija wrote: Ja asensin kaiken täsmälleen sivuston ohjeiden mukaisesti. johtuisiko siitä että minulla on VC 2010 ja ohjeet ja kirjasto on 2008-versiolle..?
Se koko kirjasto pitää kääntää itse VC 2010:lle. Suosittelen muuten kääntämään suoraan SFML 2:n, siihen on korjattu aika paljon bugeja. Ei kannata pelästyä kääntämistä, siihen on hyvä tutoriaali ja ainakaan itselleni ei tullut mitään ongelmia, kun käänsin juurikin samalla kääntäjällä.

Yrititkö kääntää jotain esimerkkiä?
Naput kännykkä

Re: C++ -kysymykset

Post by Naput kännykkä »

Yritin kääntää 1.6:en dokumentaation etusivun esimerkkiä. Ja miten tuo kirjasto tarkkaan ottaen käännetään?
Post Reply