C++ -kysymykset
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ -kysymykset
Tarvisin kapseloida koodini ja mitä nyt olen lukenut täältä jotain, niin linkkerin pitäisi osata linkata kaikki .o tiedostot automaattisesti. Kysymys kuuluukin, mitäs mun pitää tehdä, että näin kävisi? IDE on DevCPP ja kääntäjä MinGW32.
Re: C++ -kysymykset
Ainakin mulla itsellä se tekee sen automaagisesti (jos nyt tajusin mitä tarkoitit)
Re: C++ -kysymykset
Mites nämä .o:t liittyy kapselointiin?Grandi wrote:Tarvisin kapseloida koodini ja mitä nyt olen lukenut täältä jotain, niin linkkerin pitäisi osata linkata kaikki .o tiedostot automaattisesti. Kysymys kuuluukin, mitäs mun pitää tehdä, että näin kävisi? IDE on DevCPP ja kääntäjä MinGW32.
http://fi.wikipedia.org/wiki/Kapselointi
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ -kysymykset
Jos mulla on kymmenen .cpp tiedostoa, ne muuttuvat automaagisesti .o tiedostoiksi kuten pitääkin. Mutta niitä ei pysty käyttää, sillä jos yritän käyttää niissä olevia funktioita / luokkia / whatever main.cpp:ssä, niin homma ei pelitä. Herjaa sitä että niitä ei ole määritetty.temu92 wrote:Ainakin mulla itsellä se tekee sen automaagisesti (jos nyt tajusin mitä tarkoitit)
Pettis: No tarkotuksena olis saada koodi eri tiedostoihin. Mutta Dibalo sanoi, että .cpp tiedostoja ei saa liittää, vaan täytyy käyttää .o tiedostoja jotka linkkerin pitäisi automaattisesti linkata koodiin.
Ja anteeksi termien väärinkäyttö :D Tossa Dibalon viesti, jota en ymmärtänyt.
Re: C++ -kysymykset
Luot erikseen Header tiedostot (eli ne .h- tai .hpp-päätteiset) Niissä määrittelet kaikki luokat ja niiden funkiot. Sitten includetat tämän tiedoston pääohjelmaasi, ja luokkien toteutukset teet erikseen .cpp-tiedostoon. Tässä esimerkkiä (ei tietenkään tuollaisenaan toimi, vaan yritän siinä esittää olennaisimman)Grandi wrote:Jos mulla on kymmenen .cpp tiedostoa, ne muuttuvat automaagisesti .o tiedostoiksi kuten pitääkin. Mutta niitä ei pysty käyttää, sillä jos yritän käyttää niissä olevia funktioita / luokkia / whatever main.cpp:ssä, niin homma ei pelitä. Herjaa sitä että niitä ei ole määritetty.temu92 wrote:Ainakin mulla itsellä se tekee sen automaagisesti (jos nyt tajusin mitä tarkoitit)
Pettis: No tarkotuksena olis saada koodi eri tiedostoihin. Mutta Dibalo sanoi, että .cpp tiedostoja ei saa liittää, vaan täytyy käyttää .o tiedostoja jotka linkkerin pitäisi automaattisesti linkata koodiin.
Ja anteeksi termien väärinkäyttö Tossa Dibalon viesti, jota en ymmärtänyt.
Code: Select all
//Pääohjelma.cpp
#include "omaluokka.hpp"
/*
loput ohjelmasta
*/
Code: Select all
//Omaluokka.hpp
#ifndef OMALUOKKA_HPP
#define OMALUOKKA_HPP
/* kaikkea muuta tarpeellista */
class omaluokka{
void jokufunktio();
};
/* kaikkea muuta tarpeellista */
#endif
Code: Select all
//omaluokka.cpp
#include "omaluokka.hpp"
/*kaikkea muuta tarpeellista */
void omaluokka::jokufunktio(){
/* toteutus */
};
/* kaikkea muuta tarpeellista */
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ -kysymykset
Kiitos avusta jälleen kerran :) Kokeilinkin jo noiden header filujen käyttöä, mutta hieman eri tavalla, ja eihän se tietenkään toiminut. Yritin nimittäin kirjoittaa .cpp:ien sisällön niihin O_o'
EDIT: W0h000! Tasan 1000 viestiä ja arvonimenä "guru".
EDIT: W0h000! Tasan 1000 viestiä ja arvonimenä "guru".
-
- Active Member
- Posts: 248
- Joined: Mon Aug 27, 2007 9:23 pm
- Location: Oulu
Re: C++ -kysymykset
Tämän takia on yleensä hyvä lukea oppikirja ennen koodauksen aloittamista Etenkin tuo #ifndef-define -hässäkkä on asia joka ei kyllä heti tulisi itsellä mieleen, mutta se kannattaa tosiaan ottaa tavaksi aina headeria tehdessä. Tässäpä lisäksi yksi "kikka" jota käyttämällä koodista saa "promaista" Nimittäin forward declaration.Grandi wrote:Kiitos avusta jälleen kerran Kokeilinkin jo noiden header filujen käyttöä, mutta hieman eri tavalla, ja eihän se tietenkään toiminut. Yritin nimittäin kirjoittaa .cpp:ien sisällön niihin O_o'
Esmerkki:
Code: Select all
#ifndef __HEROH__
#define __HEROH__
//Include files
#include "GameObject.h" //CGameObject declaration
//Forward declarations
class CMonster;
class CGameEngine;
class CHero : public CGameObject
{
public:
CHero(const CGameEngine* engine);
void AttackMonster(CMonster* monster);
private:
CGameEngine* engine; //Not owned, do not delete
};
#endif //__HEROH__
OoO
Re: C++ -kysymykset
erm siis, tuo ilmestyy ku yritän buildaa ja mun projekti oli pelkästään yksinkertanen laskin jota väsäilin tylsyyksissänianttipanda wrote:Aika "Ns. ei hyvälle terveydelle" -osastoa tuo sun viestisi Harhar.x wrote:tää luulee et Ä on D ja Ö on v
tälläst tulee ku yritän buildaa, miten ideaa?
Onko muuta vikaa kuin väärät kirjaimet? Esimerkiksi estääkö tuo asia projektin kääntymisen? Ei k
yllä hajuakaan mistä moinen johtuu, pistäpä vaikka testiprojekti zippinä tänne jossa moinen ongelma ilmenee (poista kaikki debug ja release -kansiot ennen zippaamista).
mut jostain syystä tuli tuo eikä ole mitään hajua mistä johtus :/
kokeilin updatee koneen kielet mut eipä löytyny vinukan toista CD:tä ni jäi siihen :E [en omista polttavaa... toimivaa..]
koska mul näkyy tietyt merkit sellasena jännänä merkkinä.. [suurin osa kiinalaisist/erikois.]
joku ratkasu pitäs saada et vois jatkaa tän c++ alottelemista
autoitillä osaisin mut emmä haluu siihen jäädä tahon oppia c++
ja se koodi oli siis tyyliin just
cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2
cout >> num1 laskutyyppi num2 = "vastaus on:" ->
etc..
Re: C++ -kysymykset
Väärin. Oikea tyyli onx wrote: cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2
cout >> num1 laskutyyppi num2 = "vastaus on:"
Code: Select all
cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2;
cout >> num1 >> laskutyyppi >> num2 >> "vastaus on:";
Re: C++ -kysymykset
no se oli just sellanentemu92 wrote:Väärin. Oikea tyyli onx wrote: cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2
cout >> num1 laskutyyppi num2 = "vastaus on:"
Toivottavasti tuo oli kuitenkin vain nopeasti kirjoitettu esimerkki ettet oikeasti tee noin pahoja virheitäCode: Select all
cout << "mitä tahot laskee?" << endl; cin >> num1 >> laskutyyppi >> num2; cout >> num1 >> laskutyyppi >> num2 >> "vastaus on:";
mutjoo tarviin vieläki jotain joka auttaa mua.. muuten pitää siirtyä c# ;(
-
- Active Member
- Posts: 248
- Joined: Mon Aug 27, 2007 9:23 pm
- Location: Oulu
Re: C++ -kysymykset
Luuletko että seikka on C++-ympäristöstäsi kiinni, vai onko windows-asennuksesi ryssitty pahemman kerran? En ymmärrä mikä vaihtoehto C# on jos C++-ympäristö ei toimi. Tai miksi siihen siirtyminen pitää ilmaista surullisella hymiöllä Se on tarkoituksiinsa loistava, muttei millään muotoa korvaa C++-kieltä.x wrote:mutjoo tarviin vieläki jotain joka auttaa mua.. muuten pitää siirtyä c# ;(
Voisitpa asentaa sen käyttiksesi uusiksi. Sillä tuollaiset asiat yleensä hoituu
OoO
Re: C++ -kysymykset
joo mut oon laiska.. +,0anttipanda wrote:Luuletko että seikka on C++-ympäristöstäsi kiinni, vai onko windows-asennuksesi ryssitty pahemman kerran? En ymmärrä mikä vaihtoehto C# on jos C++-ympäristö ei toimi. Tai miksi siihen siirtyminen pitää ilmaista surullisella hymiöllä Se on tarkoituksiinsa loistava, muttei millään muotoa korvaa C++-kieltä.x wrote:mutjoo tarviin vieläki jotain joka auttaa mua.. muuten pitää siirtyä c# ;(
Voisitpa asentaa sen käyttiksesi uusiksi. Sillä tuollaiset asiat yleensä hoituu
ja c++:saan mua yritettiin saada vissiin se 2viikkoa ku alottelin c# :E
ja tuskin winukan asetuksis mitään vikaa on ku mulla on kuitenki kone 24/7 päällä ja vielä muutama tunti aikasemmin olin säätäny samaa..
~
Re: C++ -kysymykset
Väärin. Oikea tyyli ontemu92 wrote:Väärin. Oikea tyyli onx wrote: cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2
cout >> num1 laskutyyppi num2 = "vastaus on:"
Toivottavasti tuo oli kuitenkin vain nopeasti kirjoitettu esimerkki ettet oikeasti tee noin pahoja virheitäCode: Select all
cout << "mitä tahot laskee?" << endl; cin >> num1 >> laskutyyppi >> num2; cout >> num1 >> laskutyyppi >> num2 >> "vastaus on:";
Code: Select all
cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2;
cout << num1 << laskutyyppi << num2 << "vastaus on:";
Re: C++ -kysymykset
Guest wrote:Väärin. Oikea tyyli ontemu92 wrote:Väärin. Oikea tyyli onx wrote: cout << "mitä tahot laskee?" << endl;
cin >> num1 >> laskutyyppi >> num2
cout >> num1 laskutyyppi num2 = "vastaus on:"
Toivottavasti tuo oli kuitenkin vain nopeasti kirjoitettu esimerkki ettet oikeasti tee noin pahoja virheitäCode: Select all
cout << "mitä tahot laskee?" << endl; cin >> num1 >> laskutyyppi >> num2; cout >> num1 >> laskutyyppi >> num2 >> "vastaus on:";
Code: Select all
cout << "mitä tahot laskee?" << endl; cin >> num1 >> laskutyyppi >> num2; cout << num1 << laskutyyppi << num2 << "vastaus on:";
joojoo kysymys ei ollu mun tyylistä vaan miten ton saa korjattua
-
- Active Member
- Posts: 248
- Joined: Mon Aug 27, 2007 9:23 pm
- Location: Oulu
Re: C++ -kysymykset
Pistäpä x edelleen se projekti mitä olet kääntämässä tänne zippinä, ja voit pistää myös Visual C++:n Output- ja Error List -ikkunoiden sisällön. Pyysinkin näitä jo aikaisemmin. Ja ei, pelkkä pieni virheellinen koodinpätkä ei ole sama kuin Visual C++ -projekti. Projektiin kuuluu mm. sln, vcproj, ja tietysti .h ja .cpp -tiedostot. Eli koko kansio missä .sln on, paitsi voit poistaa debug- ja release -kansiot ja luultavasti ncb-filenkin.
OoO
Re: C++ -kysymykset
Mjoo, mäki tein sit virheenGuest wrote:Väärin. Oikea tyyli on
Code: Select all
cout << "mitä tahot laskee?" << endl; cin >> num1 >> laskutyyppi >> num2; cout << num1 << laskutyyppi << num2 << "vastaus on:";
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ -kysymykset
Ajattelin tänään tässä, että voisin kokeilla OGRE:a jos vaikka siirtyisin Irrlichtin käytöstä siihen. Ongelmaksi tuli, että ogrea ei näköjään saa toimimaan Dev-Cpp:llä. Sivustoilla lukee, että se tukee MS Visual C++:ssaa. Yritin ladata tätä ohjelmaa, mutta jokainen versio minkä lataan on joko maksullinen tai sitten shareware. Saako tätä ilmaisena mistään?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ -kysymykset
Sain ladattua sen ilmaisen version ja olen nyt onnistunut asentamaan OGRE:n onnistuneesti. Ongelmaksi tuli ymmärtää OGRE:n perus toiminta idea (ja siihen päälle viellä, että pitää totutella uuteen editoriin ja kääntäjään). Jos joku joka on käyttänyt ogrea voisi kertoa vähäsen miten edes aloitan uuden projektin? Sen verran olen ymmärtänyt, että OGRE:ssa on jokin application luokka, joka vastaa Irrlichtin device luokkaa. Tutoriaalessa kaikki koodi kirjoitetaan yhden luokan sisälle ja sitä en ymmärrä, että miksi . Eli miten saan kaikista yksinkertaisimmalla keinolla, vaikka kuution näkymään ruudussa?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: C++ -kysymykset
Uskoin kerrankin viisaampia ja uskaltauduin kokeilemaan uudelleen VC++:aa. Osoittautui, että anttipanda tiesi ( yllättäen ) paremmin, ja kehitysympäristö on - pienestä hitaudesta huolimatta - vallan mainio. Hitauskin johtuu vain koneeni muinaudesta.
Nyt vain tällainen yleinen kysymys: miten C++ -koodi on järkevintä jaotella eri tiedostoihin? Kun on näitä .h, .cpp, .obj ynnä muita tiedostoja, jotka liittyvät jotenkin asiaan, muttei mitään hajua kuinka näitä tulisi käyttää parhaan ( selkeimmän ja toimivimman ) lopputuloksen saavuttamiseksi.
Nyt vain tällainen yleinen kysymys: miten C++ -koodi on järkevintä jaotella eri tiedostoihin? Kun on näitä .h, .cpp, .obj ynnä muita tiedostoja, jotka liittyvät jotenkin asiaan, muttei mitään hajua kuinka näitä tulisi käyttää parhaan ( selkeimmän ja toimivimman ) lopputuloksen saavuttamiseksi.