C++ -kysymykset

Muu yhteisön välinen keskustelu.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim »

hm. :| template funktion työstäminen töksähti pahemman kerran:
kääntäjä (gcc) valittaa itse tehdystä template tyypistä -> koko homma ei käänny. virheilmoitukset sain kukistettua yhteen :?
kääntäjä valittaa search_node luokasta, että se ei mukamas ole mikään tyyppi :|

Eli selittäisittekö miksi alin koodeista ei käänny ? tai kuinka ongelman voisi korjata.

Funktion käyttämä valmis template luokka:

Code: Select all

// (C) 2008 by Dark Code, Jarmo Tiitto
#include "NBTree_Node.h"

template<class T>
class search_node
{
    public:
        search_node<T>(Branch<T>* ptr, unsigned int index)
        {
            this->ptr = ptr;
            this->index = index;
        }
        Branch<T>* ptr;
        unsigned int index;
};

/* KUVAUS:
 *      Funktio jäsenten läpikäyntiin, käyttää pinona tavallista haaraumaa.
 *      jäsenet iteroidaan kiertämällä jatkuvastti vasemmalle
 *      Palauttaa true, kun kaikki mahdolliset jäsenet on käyty läpi.
 *      ensimmisenä parametrinä välitetään käytettävä "jäsen pino"
 *      toisena parametinä poinnteri nykyseen jäseneen
 */
template<class T>
bool IterateLeft(Branch<T>& stack, Branch<T>* current)
{
    //annettu pino on tyhjä, aloitetaan alusta.
    if(stack.Count_branches() == 0)
    {
        if(current != 0)
        {
            if(current->Branch_count()>1)
            {
                stack.Push_branch(new search_node(current, 1));
                current = current.Get_branch(0);
            }else
            {
                current = current.Get_branch(0);
            }
        }
        return 0;
    }else
    {
}
Luokan toteutus:

Code: Select all

// (C) 2008 by Dark Code, Jarmo Tiitto
#include "NBTree_Node.h"
#define NDEBUG //debuggaus !!
#include <assert.h>

/* KUVAUS:
 *      Oletus konstruktori
 */
template<class T>
Branch<T>::Branch()
{
    //std::cout<<"constructor called..."<<std::endl;
    prev = 0;
    base = 0;
}

/* KUVAUS:
 *      Kopio konstruktori
 */
template<class T>
Branch<T>::Branch(const Branch<T> &copy)
{
    //std::cout<<"copy constructor called..."<<std::endl;
    prev = copy.prev;
    Value = copy.Value;
    Branch_list *cur = copy.base;
    if(cur != 0)
    {
        base = new Branch_list;
        base->data = cur->data;
        Branch_list *tmp = base, *tmp2 = 0;
        while(cur != 0)
        {
            tmp2 = new Branch_list;
            tmp->next = tmp2;
            tmp->data = cur->data;
            tmp = tmp2;
            cur = cur->next;
        }
        tmp->next = 0;
    }else
    {
        base = 0;
    }
}

/* KUVAUS:
 *      Konstruktori, joka luo ja alustaa tietyn määrän haaroja.
 */
template<class T>
Branch<T>::Branch(unsigned int branches)
{
    //std::cout<<"constructor called..."<<std::endl;
    prev = 0;
    base = 0;
    for(unsigned int i = 0; i < branches; i++ )
    {
        Push_branch(0);
    }
}

/* KUVAUS:
 *      Destruktori, poistaa olemassa olevat haarat.
 */
 template<class T>
 Branch<T>::~Branch()
 {
     clear_branch_list();
     assert(base == 0);
     //std::cout<<"destructor called..."<<std::endl;
 }

 /* KUVAUS:
  *     Lisää uuden haaran listaan.
  */
template<class T>
void Branch<T>::Push_branch(Branch<T>* ptr = 0)
{
    if(base == 0)
    {
        base = new Branch_list;
        assert(base != 0);
        base->data = ptr;
        base->next = 0;
    }else
    {
        Branch_list* tmp = base;
        while(tmp->next != 0)
        {
            tmp = tmp->next;
        }
        Branch_list* new_itm = new Branch_list;
        assert(new_itm != 0);
        new_itm->data = ptr;
        tmp->next = new_itm;
    }

}

/* KUVAUS:
 *      Palauttaa haaran listasta.
 */
template<class T>
Branch<T>* Branch<T>::Get_branch(unsigned int index)
{
    assert(base != 0);
    Branch_list* tmp = base;
    while(tmp->next != 0 && index != 0)
    {
        tmp = tmp->next;
        index--;
    }

    return tmp->data;
}

/* KUVAUS:
 *      Asettaa haaran lisaan.
 */
template<class T>
void Branch<T>::Set_branch(unsigned int index, Branch<T>* ptr)
{
    assert(base != 0);
    Branch_list* tmp = base;
    while(tmp->next != 0 && index != 0)
    {
        tmp = tmp->next;
        index--;
    }
    tmp->data = ptr;
}

/* KUVAUS:
 *      Laskee haarojen määrän.
 */
template<class T>
unsigned int Branch<T>::Branch_count()
{
    Branch_list* tmp = base;
    unsigned int count = 0;
    while(tmp != 0)
    {
        tmp = tmp->next;
        count++;
    }
    return count;
}

/* KUVAUS:
 *      poistaa haaralistan (ei siis itse haaroja listasta).
 */
template<class T>
void Branch<T>::clear_branch_list()
{
    if(base != 0)
    {
        Branch_list* cur = base;
        Branch_list* del = 0;
        while(cur->next != 0)
        {
            del = cur;
            cur = cur->next;
            delete del;
        }
        delete cur;
        base = 0;
    }
}

/* KUVAUS:
 *      Poistaa haaran listasta.
 */
template<class T>
void Branch<T>::Delete_branch(unsigned int index)
{
    if(index > 0)
    {
        Branch_list *tmp = base, *del = 0, *tmp2 = 0;

        while(tmp->next != 0 && index > 1)
        {
            tmp = tmp->next;
            index--;
        }

        if(tmp->next != 0) del = tmp->next;
        if(del != 0)
        {
            if(del->next !=0) tmp2 = del->next;
        }
        assert(tmp != tmp2);
        tmp->next = tmp2;
        delete del;

    }else if(base->next != 0)
    {
        Branch_list* tmp = base->next;
        delete base;
        base = tmp;
    }else if(base->next == 0)
    {
        base->data = 0;
        delete base;
        base = 0;
    }
}

/* KUVAUS:
 *      Vaihtaa haarojen paikkaa keskenään.
 */
template<class T>
void Branch<T>::Swap_branches(unsigned int first, unsigned int second)
{
    Branch_list *tmp = base, *swap1 = 0, *swap2 = 0;
    unsigned int index = 0;
    if(tmp == 0) return;
    while(tmp->next != 0)
    {
        if(index == first) swap1 = tmp;
        if(index == second) swap2 = tmp;

        if(swap1 != 0 && swap2 != 0)
        {
            Branch<T>* btmp = swap1->data;
            swap1->data = swap2->data;
            swap2->data = btmp;
            break;
        }
        index++;
        tmp = tmp->next;
    }

}

/* KUVAUS:
 *      Asettaa edellisen haaran.
 */
template<class T>
inline void Branch<T>::Set_previous(Branch<T>* ptr)
{
    prev = ptr;
}
template<class T>

/* KUVAUS:
 *      Palauttaa edellisen haaran.
 */
inline Branch<T>* Branch<T>::Get_previous()
{
    return prev;
}

/* KUVAUS:
 *      Asettaa haaran datan.
 */
template<class T>
inline void Branch<T>::Set_data(T& val)
{
    Value = val;
}

/* KUVAUS:
 *      Palauttaa haaran datan.
 */
template<class T>
inline T& Branch<T>::Get_data()
{
    return Value;
}
Ja tässä itse ongelma koodi:

Code: Select all

// (C) 2008 by Dark Code, Jarmo Tiitto
#include "NBTree_Node.h"

template<class T>
class search_node
{
    public:
        search_node<T>(Branch<T>* ptr, unsigned int index)
        {
            this->ptr = ptr;
            this->index = index;
        }
        Branch<T>* ptr;
        unsigned int index;
};

/* KUVAUS:
 *      Funktio jäsenten läpikäyntiin, käyttää pinona tavallista haaraumaa.
 *      jäsenet iteroidaan kiertämällä jatkuvastti vasemmalle
 *      Palauttaa true, kun kaikki mahdolliset jäsenet on käyty läpi.
 *      ensimmisenä parametrinä välitetään käytettävä "jäsen pino"
 *      toisena parametinä poinnteri nykyseen jäseneen
 */
template<class T>
bool IterateLeft(Branch<T>& stack, Branch<T>* current)
{
    //annettu pino on tyhjä, aloitetaan alusta.
    if(stack.Count_branches() == 0)
    {
        if(current != 0)
        {
            if(current->Branch_count()>1)
            {
                stack.Push_branch(new search_node(current, 1));
                current = current.Get_branch(0);
            }else
            {
                current = current.Get_branch(0);
            }
        }
        return 0;
    }else
    {
        //lisää uber koodia :D
    {
}
PS: EN MISSÄÄN NIMESSÄ aijo käyttää std:n ominaisuuksia !
EDIT:

Onglema ratkesi ! olin sekoillut templaten parametrien kanssa.. :mrgreen: kommennteja kaivataan silti.

Last edited by JATothrim on Wed Jun 25, 2008 4:23 pm, edited 1 time in total.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Mad_Mac
Newcomer
Posts: 1
Joined: Sun Sep 09, 2007 1:05 pm

Re: C++ -kysymykset

Post by Mad_Mac »

Sanokaas kumpaa kannattaa alkaa käyttämää, OGRE:a vai Irrlichtiä? Pääasiassa pelintekoon, mutta myös mahdollisesti muuhunkin.
Ogressa taitaa olla aikas paljon kovempi homma opetella ja käyttää, mutta taitaa sitten loppu peleissä tehokkuudessa voittaa irrlichtin.
Irrclichti olisi taas aika kätevä ja helppo oppia.

Tommoista G3D:kin katselin ja näytti ihan kivalta. Mutta minkä te valitsisitte ?
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja »

Ottaisin NeHen(OpenGL) tai directxtutorial.comin (DirectX) kovaan syyniin, ja oppisin ihan oikeasti tekemään haluamani asiat.

IMHO, valmiiden kirjastojen käyttö on kädettömille. (Tai elämällisille, kuinka vain.)
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Mad_Mac wrote:Sanokaas kumpaa kannattaa alkaa käyttämää, OGRE:a vai Irrlichtiä? Pääasiassa pelintekoon, mutta myös mahdollisesti muuhunkin.
Ogressa taitaa olla aikas paljon kovempi homma opetella ja käyttää, mutta taitaa sitten loppu peleissä tehokkuudessa voittaa irrlichtin.
Irrclichti olisi taas aika kätevä ja helppo oppia.

Tommoista G3D:kin katselin ja näytti ihan kivalta. Mutta minkä te valitsisitte ?
Itse pidän enemmän Irrlichtistä, koska se on yksinkertainen. Kuulemani mukaan uusin Irrlichtin versio olisi nopeampi kuin OGRE. Lisäksi Irrlicht osaa ladata enenemmän eri tiedosto muotoisia 3D modeleita. Irrlichtin kylkijäisiiksi saa myös mukavan kasan eri työkaluja ja lisä kirjastoja, jotka ovat suoraa sopivia Irrlichtiin, koska ovat samalta tekijältä. Lisä kirjastoja ovat irrKlang (äänikirjasto), irrXML(XML parseri) sekä .irr kartta tiedostojen muokkaukseen käytettävä työkalu(irrEdit). .irr tedostot voivat sisältää monia 3D modeleita ja textuureita, jotka voidaan ladata peliin yhdellä kertaa. OGRE:sta en tiedä, että tukeeko se Cg shading kieltä, mutta Irrlichtiin saa lisäkirjastolla sen toimimaan(IrrCg).

Ja jos pelejä haluat yksin tehdä niin en suosittele käyttämään OpenGL:ää tai DirectX:ää suoraan vaan käyttäisin valmista grafiikka kirjastoa, koska valmiilla kirjastolla saat paljon nopeammin peliä aikaan ja muutenkin ne ovat ihan tarpeeksi hyviä tavalliselle pelin väsääjälle.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
porzi
Active Member
Posts: 119
Joined: Mon Aug 27, 2007 11:10 pm
Contact:

Re: C++ -kysymykset

Post by porzi »

koodaaja wrote:Ottaisin NeHen(OpenGL) tai directxtutorial.comin (DirectX) kovaan syyniin, ja oppisin ihan oikeasti tekemään haluamani asiat.

IMHO, valmiiden kirjastojen käyttö on kädettömille. (Tai elämällisille, kuinka vain.)
Sanoi koodaaja CoolBasic -foorumilla. :D

(ja jos joku ei jo tuosta tajunnut, CB on miljoona kertaa enemmän valmiiksi pureskeltua koodaamista, kuin mitään kirjastoa apunakäytettäessä)

Kirjastot yms. helpottavat elämää huomattavasti, mutta toisaalta asettavat rajoituksia.

Itse olisin sitä mieltä, että kannattaa ensin opetella käyttämään jotain kirjastoa (esim. Helsingin kaupunginkirjasto :D ... olen taas hauskalla päällä) ja sitten kun sen rajat tulevat vastaan, opetella asiat ilman kirjastoa. Kun jonkinlainen käytännön kokemus toiminnasta on hallussa, on itse asian ohjelmointi helpompi oppia.
Voittoja viikkokisoissa: 3
http://fugufish.dy.fi/ | vanhat cb-pelini: http://porzi.arkku.net/old_games/
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: C++ -kysymykset

Post by Sami345 »

Miten saan auton pyörii järkevästi? Aja koodi niin ymmärrät. Ota car.bmp CoolBasicin media kansiosta.

Code: Select all

#include <SDL.h>
#include <SDL\SDL_rotozoom.h>
#include <cmath>

void DrawImage(SDL_Surface *kuva, SDL_Surface *naytto,int x, int y);

int main(int argc, char *argv[]) {



    bool pois = false;
    Uint8* nappi;
    double x = 0;
    double y = 0;
    double rot = 0;
    const long double PII = 3.141592653589793238462643383279L;
    if( SDL_Init(SDL_INIT_VIDEO) < 0 )
    {
        fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError());
        return 0;
    }


    SDL_Surface *naytto;
    SDL_Surface *temp;

    naytto = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF);

    SDL_Surface *kuva;
    kuva = SDL_LoadBMP("car.bmp");
    SDL_SetColorKey(kuva, SDL_SRCCOLORKEY, SDL_MapRGB(kuva->format,0,0,0));
    SDL_Event tapahtuma;

    do
    {
        SDL_PollEvent(&tapahtuma);
        nappi = SDL_GetKeyState(NULL);
        if ( nappi[SDLK_UP] ) { y -= sin(PII*rot/180); x += cos(PII*rot/180); }
        if ( nappi[SDLK_DOWN] ) { y += sin(PII*rot/180); x -= cos(PII*rot/180); }
        if ( nappi[SDLK_LEFT] ) { rot -= 1; }
        if ( nappi[SDLK_RIGHT] ) { rot += 1; }
        if ( nappi[SDLK_ESCAPE] ) { pois = true; }
        temp = rotozoomSurface(kuva, rot, 1, 0);
        DrawImage(temp,naytto,x ,y);
        SDL_FreeSurface(temp);
        SDL_Flip(naytto);
    }
    while(pois==false);



    // odotetaan 5 sekuntia

    SDL_FreeSurface(kuva);
    SDL_Quit(); // "suljetaan" SDL
    return 0;

}

    void DrawImage(SDL_Surface *kuva, SDL_Surface *naytto,int x, int y)
    {
        SDL_Rect alue;
        alue.x = x;
        alue.y = y;
        SDL_BlitSurface(kuva,NULL,naytto,&alue);
    }
EDIT:

Siis pyörii oman keskipisteensä ympäri.

Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: C++ -kysymykset

Post by Nemesis »

Miten saan windowsin valmiit dialogit(esim. http://msdn.microsoft.com/en-us/library ... S.85).aspx) näkymään? Microsoftin sivulta kyllä löytyy esimerkkejä, mutta en saa niitä toimimaan. Viitsisikö joku heittää yksinkertaisen esimerkin? Olen melko aloittelija C++:ssa.
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda »

Nemesis wrote:Miten saan windowsin valmiit dialogit(esim. http://msdn.microsoft.com/en-us/library ... S.85).aspx) näkymään? Microsoftin sivulta kyllä löytyy esimerkkejä, mutta en saa niitä toimimaan. Viitsisikö joku heittää yksinkertaisen esimerkin? Olen melko aloittelija C++:ssa.
Seuraa linkkiä jossa kerrotaan esim. GetOpenFileName funkkarista enemmän (http://msdn.microsoft.com/en-us/library ... S.85).aspx). Siellä on kerrottu seuraavaa:

Header: Windows.h
Import library: Comdlg32.lib

Eli #include <windows.h> alkuun, ja linkkerin asetuksiin lisätään linkattavaksi Comdlg32.lib.

Tällä sivulla on esimerkkejä yleisistä dialogeista: http://msdn.microsoft.com/en-us/library ... #open_file. Tuon yksinkertaisemmaksi ei esimerkki tuosta openfilestä voi mennä. Tärkeintä on muistaa headeri ja ottaa kirjasto mukaan linkkaukseen.
OoO
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: C++ -kysymykset

Post by Nemesis »

Mitä vikaa tässä koodissa on? Melkein suora kopio tuosta esimerkistä. Mitään virheilmoitusta ei kyllä tule, mutta dialogi ei suostu avautumaan. Se palauttaa vain 0. Comdlg32.lib on mukana.

Code: Select all

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
	OPENFILENAME ofn;       // common dialog box structure
	char szFile[260];       // buffer for file name
	HWND hwnd;              // owner window
	HANDLE hf;              // file handle

	// Initialize OPENFILENAME
	ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFile = szFile;
	// Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
	// use the contents of szFile to initialize itself.
	ofn.lpstrFile[0] = '\0';
	ofn.nMaxFile = sizeof(szFile);
	ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
	ofn.nFilterIndex = 1;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

	cout << GetOpenFileName(&ofn) << endl;
	cout << "Press ENTER to continue..." << endl; 
	cin.get();
	
    return 0;
}
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda »

Nemesis wrote:Mitä vikaa tässä koodissa on? Melkein suora kopio tuosta esimerkistä. Mitään virheilmoitusta ei kyllä tule, mutta dialogi ei suostu avautumaan. Se palauttaa vain 0. Comdlg32.lib on mukana.
Pikainen arvaus olisi että koska ohjelma on konsolisovellus, mutta tämä oli nyt vain heitto. Dialogeja ei ole tarkoitettu käytettäväksi konsolisovellusten kanssa.
OoO
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: C++ -kysymykset

Post by Nemesis »

anttipanda wrote:
Nemesis wrote:Mitä vikaa tässä koodissa on? Melkein suora kopio tuosta esimerkistä. Mitään virheilmoitusta ei kyllä tule, mutta dialogi ei suostu avautumaan. Se palauttaa vain 0. Comdlg32.lib on mukana.
Pikainen arvaus olisi että koska ohjelma on konsolisovellus, mutta tämä oli nyt vain heitto. Dialogeja ei ole tarkoitettu käytettäväksi konsolisovellusten kanssa.
Juu kiitos, ongelma oli juuri tuossa.
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka »

ostin itelle c++ ja olio ohjelmointi kirjan (8.painos) ja päätin kokeilla ohjelmointia c++:lla ja kirjan ansiosta opinkin jo jotain, mutta ongelmana on, että ääkköset eivät näy oikein, mitä pitäis tehdä, jotta ne näkyisivät oikein?
Username

Re: C++ -kysymykset

Post by Username »

Ääkköset tehdään näin std::cout << "\x84"; näyttää ä:n, ja iso Ä "\x8E", ö "\x94" ja iso Ö "\x99"
lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka »

Kiitokdisa ääkkös avusta, mutta toinen asia, asensin sdl kirjaston ja nyt se herjaa seuraavanlaista (alla) virheilmoitusta. Käyät vc++ 2008 versiota.

Code: Select all

1>------ Build started: Project: metsämies rpg, Configuration: Debug Win32 ------
1>Linking...
1>LINK : fatal error LNK1561: entry point must be defined
1>Build log was saved at "file://c:\Users\Jesse\Desktop\Metsämies RPG\metsämies rpg\Debug\BuildLog.htm"
1>metsämies rpg - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda »

lukutoukka wrote:Kiitokdisa ääkkös avusta, mutta toinen asia, asensin sdl kirjaston ja nyt se herjaa seuraavanlaista (alla) virheilmoitusta. Käyät vc++ 2008 versiota.
Olet varmaa tehnyt kokonaan tyhjän projektin? Kannattaa aloittaa Win32 Console Application templaatista, jonka tyypiksi luomisen yhteydessä laitetaan Windows Application ja ruksataan Empty Project. Tässä on pieni opas aiheesta (visual C++ 2005) http://www.meandmark.com/sdlvisualc.pdf. Tuota ohjetta seuraten kannattaa tehdä heti projektin luomisen jälkeen yksi cpp-tiedosto ja tehdä sinne main-funktio, ainakaan itsellä kaikkia projektin asetuksia ei tullut näkyviin ilman sitä.

Se, haluatko konsolin näkyviin vai et, voidaan tehdä erikseen debug- ja release-käännöksille. Sovelluksen tyyppi muutetaan seuraavasti: rightclick projektin nimen kohdalla, Properties. Sieltä Configuration Properties->Linker->System. Sieltä SubSystemiksi Console tai Windows.
OoO
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

Mikäs olis waitkey:n korvike C++:ssa? Kokeilin cin oliolla ja vielä .get():n kanssa, mutta kyllä se vaan entterin painelua näyttäisi tarvitsevan.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: C++ -kysymykset

Post by TheFish »

Grandi wrote:Mikäs olis waitkey:n korvike C++:ssa? Kokeilin cin oliolla ja vielä .get():n kanssa, mutta kyllä se vaan entterin painelua näyttäisi tarvitsevan.
Konsoli viritelmissähän tuo taitaa hoitua tällä (XP:llä):

Code: Select all

System("pause");
EDIT:

Jaa, ymmärsin että tahdoit vain odottaa että jotain nappia painetaan...

Last edited by TheFish on Wed Jul 30, 2008 2:40 pm, edited 1 time in total.
CoolBasic henkilökuntaa
Kehittäjä
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

Juu, mutta se näppäin pitäis saada vielä muuttujaan.
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda »

Grandi wrote:Juu, mutta se näppäin pitäis saada vielä muuttujaan.
Miten olisi _getch()? conio.h, ei muistaakseni ole standardi-c++:aa.
Last edited by anttipanda on Wed Jul 30, 2008 2:43 pm, edited 1 time in total.
OoO
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

Tuohan näyttää varsin toimivalta! Kiitos :)

EDIT: Taidan käyttää tota missä ei ole edessä olevaa alaviivaa.
Post Reply