Switch-case rakenteessa kun haluaa tehdä olion, niin Visual studio herjaa "see declaration of olio". Eikö case-osassa voi tehdä olioita?
C++ ongelma
tepppi
8564
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 8
Vanhimmat
Anna esimerkki koodistasi miten yrität luoda oliota casessa. Mitään syytä ei pitäisi olla, miksi ei onnistuisi.
Eli tuossa on nyt koodin pätkä hieman muokattunua. Erillisessä header-filessä on luotu luokat ja niistä haluaisin tehdä olioita.
Koodissa ei välttämättä ole kaikki kaarisulut jne. paikoillaan.
Eli tuossa on kaksi switch-casea sisäkkäin ja sisimmässä haluaisin luoda olion, mutta Visual Studio ei anna tehdä.
void main()
{
TÄSSÄ OLION LUOMINEN ONNISTUU MAINIOSTI
int valinta, valinta;
while(valinta !=0)
{
Aliohjelma();
cin >> valinta;
switch(valinta)
{
case 1:
while(valinta2 != 0)
{
Aliohjelma2();
cin >> valinta2;
switch(valinta2)
{
case 1:
TÄSSÄ HALUAISIN LUODA OLION TEKEMÄSTÄNI LUOKASTA break;
case 2:
break;
case 3:
break;
}
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
}
}
hmm ainakin while loopissa ollaan kunnes käyttäjä antaa nollan tällöin ainakin switch rakenne rikkoutuu pahasti. Kannattaa varmaan kysellä lukua loopissa niin kauan kuin luku on nolla ja reagoida vastauksen mukaan.
#include
using namespace std;
class A{
public:
string s;
A(){}
A(string h){
this -> s = h;
cout
Ei auta että luot sen tuhoajan jos et koskaan kutsu sitä!
Eli jos luot uuden olion new-käskyllä niin sun täytyy myöhemmin muistaa myös tuhota se delete-käskyllä. Tämä on yleisin syy muistivuotoihin ja sen takia new-käskyä kannattaa käyttää varovaisesti, luo mieluummin olio lokaalisti niin se kuolee automaattisesti.
Hirmuinen unohdus taas kerran. Olisi pitänyt muistaa tuo ehdottomasti.
Pala koodistasi.
-----
case 1:{
A *a = new A("Moikka");
cout valinta;
}
-----
Olion luonti onnistuu ihan mainiosti. Ongelma on
se, ettei olioita voi käyttää kuin blokin {} sisällä. Tämä johtuu siitä, että olet määritellyt osoittimen a blokin sisälle.
Mielestäni aloittaja halusi nimenomaan tätä, että luodaan blokissa olio.