Teimme tämän tälläisen harjoitus työn opettajan johdolla luokassa ja kyseinen koodi kääntyy ja toimii 100% Visual Studio 2008:lla Windows XP-jakelussa, mutta ei XCode:lla Mac OS X:ssä. Tiedän, että koodissa
Koodi: Valitse kaikki
std::string par_merkki;
Koodi: Valitse kaikki
cin >> par_merkki;
Lienee mainittava, että XCodessa pitää standardin mukaisesti laittaa string muodossa std::string jos aikoo muuttujan luoda tai sitä käsitellä. Windows ei välittänyt siitä pätkääkään, mutta mistäpä nyt Microsoftin ei standardi softa välittäisi? Huomasin, että string kirjaston sijaan tulisi ilmeisesti käyttää fstream kirjastoa, mutta kokeilujen jälkeen niillä ei ole ilmeisesti mitään sen kummempaa eroa. Toinen on vain vanhempi kuin toinen.Teht3(1864) malloc: *** error for object 0x1000072a0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Koodi lähtee heti toimimaan kun tuon
Koodi: Valitse kaikki
std::string par_merkki;
Koodi: Valitse kaikki
char par_merkki[21];
Tässä on vielä ne koodi listaukset:
Main.cpp
Koodi: Valitse kaikki
/*
* main.cpp
* Teht3 - Muodostinfunktiot
*
* Created by --- on 15.9.2009.
* OHJ08
*
*/
#include <iostream>
#include <fstream>
#include "Auto.h"
using namespace std;
int main (int argc, char * const argv[]) {
std::string par_merkki; // käyttäjän antama auton merkki.
Auto Audi; // Olion luominen luokkamääreen mukaan.
Audi.asetaVari("Musta");
cout << endl;
cout << Audi.merkki << ", " << Audi.vm << " " << Audi.annaVari() << endl;
Audi.brummaa();
cout << "Anna auton merkki: ";
// getline(cin, par_merkki, '\n');
cin >> par_merkki;
Auto Kaara(par_merkki); // Uud.määr.muodostimen kutsu.
Kaara.asetaVari("galaxy blue");
cout << endl << endl;
Kaara.brummaa();
Kaara.brummaa();
cout << Kaara.merkki << ", " << Kaara.vm << " ";
cout << Kaara.merkki << " on hyvä auto! Varsinkin " << Kaara.annaVari() << " värisenä" << endl;
// cin.get();
// cin.get();
return 0;
}
Koodi: Valitse kaikki
/*
* Auto.h
* Teht3 - Muodostinfunktiot
*
* Created by --- on 15.9.2009.
* OHJ08
*
*/
#ifndef AUTO_H
#define AUTO_H
#include <fstream>
using namespace std;
class Auto {
public:
Auto(); // Oletusmuodostinfunktio - Constructor
Auto(std::string me);
~Auto(); // Tuhoajafunktio - Destructor - Ei koskaan parametreja eikä paluu arvoa
// Saantifunktiot - rajapinta luokan suojattuihin tietoihin.
void asetaVari(std::string va); // Kirjoitusfunktio - "setteri"
std::string annaVari(void); // Lukufunktio - "getteri"
// attribuutit
std::string merkki;
int vm;
// metodi
void brummaa(void);
private:
std::string vari;
};
#endif
Koodi: Valitse kaikki
/*
* Auto.cpp
* Teht3 - Muodostinfunktiot
*
* Created by --- on 15.9.2009.
* OHJ08
*
*/
#include <iostream>
#include <fstream>
#include "Auto.h"
using namespace std;
// Auto-luokan oletusmuodostinfunktion toteutus
Auto::Auto() {
// cout << "Muodostinfunktiossa..." << endl;
merkki = "Audi";
vm = 2010;
}
Auto::Auto(std::string me) {
merkki = me;
vm = 2010;
}
Auto::~Auto() {
cout << "Tuhoajafunktiossa." << endl;
}
void Auto::brummaa(void) {
cout << "Wruummmm!" << endl;
}
void Auto::asetaVari(std::string va) {
vari = va;
}
std::string Auto::annaVari(void) {
return vari;
}
Kiitos jos voitte vähän neuvoa tässä.