Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Alottelijan sijoitus ongelma

Sivun loppuun

Sankratar [30.10.2005 18:48:59]

#

Tässä jonkin tovin pohdittuani ongelmaani en enää keksi mistä tämä voisi johtua.

Virheeksi saan:

error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const Kuvio' (or there is no acceptable conversion)

void Piirustus::lisaaKuvio(const char* nimi, Piste paikka) const
{
	int i;
	for(i=0;i<10;i++)
	{
		if(nimi == "")
		{
			kuviot[i] = Kuvio(nimi,paikka);
		}
		break;
	}
}

constin kanssahan tässä on jokin mutta kun ei tajua niin ei tajua :)

sqwiik [30.10.2005 20:18:49]

#

1. Merkkijonoja ei voi vertailla ==:lla. Käytä sen sijaan sunktiota strcmp().
2. Mitä muuttujatyypiä on taulukko kuviot? Entä minkä muuttujatyypin palauttaa funktio Kuvio()?

Megant [30.10.2005 20:21:52]

#

No tässä voisi selittää, että onko kielenä C vai C++.

Deewiant [30.10.2005 20:29:01]

#

Megant kirjoitti:

No tässä voisi selittää, että onko kielenä C vai C++.

const funktion kuvauksen jälkeen kertoo, että C++. Kuten myös nimiavaruudessa oleva funktio.

EDIT: Ja se saattaa olla ongelman syykin. const-funktio ei saa muuttaa kuviot-taulukkoa.

Sankratar [30.10.2005 20:32:51]

#

Kielenä C++.

kuviot taulukon tyyppi on Kuvio. Varmaan selventää enemmän kun laitan näitä koodeja.

Piirustus.h

class Piirustus
{
private:

public:
	Kuvio kuviot[10];
	Piirustus();
	~Piirustus(void);

	void paivita() const;
	void lisaaKuvio(const char* nimi, const Piste paikka) const;
	void poistaKuvio(const int poistaKuvio) const;
};

Kuvio.h

class Kuvio
{
private:
	char nimi[50];
	Piste paikka;
public:
	Kuvio(const char* nimi="", const Piste& paikka=Piste());
	~Kuvio(void);
	// getterit ja setterit nimi-kentälle:
	void setNimi(const char* uusi){strcpy(this->nimi,uusi);}
	const char* getNimi() const {return this->nimi;}
	// getterit ja setterit paikka-kentälle:
	void setPaikka(const Piste& uusi){this->paikka=uusi;}
	const Piste& getPaikka() const {return this->paikka;}
	// Kuvion piirtäminen:
	void piirra() const;
};

Heikki [30.10.2005 20:56:19]

#

Korvaappa nimen charritaulu std::stringillä (std::string nimi; Tarvitset #include <string>) niin vertailu hoituu tuolla if (nimi == "")-ehdolla. Stringit ovat muutenkin käteviä, eikä tarvitse käyttää osoittimia.

kooderi [31.10.2005 17:04:20]

#

Sinun pitää overloadata = -operaattori luokalle 'kuvio'.

Mazuli [31.10.2005 18:02:59]

#

vaihda kohta

kuviot[i] = Kuvio(nimi,paikka);

muotoon

kuviot[i] = new Kuvio(nimi,paikka);

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta