C++ ongelma

Switch-case rakenteessa kun haluaa tehdä olion, niin Visual studio herjaa "see declaration of olio". Eikö case-osassa voi tehdä olioita?
8564
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

Anna esimerkki koodistasi miten yrität luoda oliota casessa. Mitään syytä ei pitäisi olla, miksi ei onnistuisi.

Äänestä
  • 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;
          }
       }
    }

    Äänestä

  • tepppi kirjoitti:

    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.

    Äänestä

  • tepppi kirjoitti:

    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;
          }
       }
    }

    #include

    using namespace std;

    class A{
    public:
    string s;
    A(){}
    A(string h){
    this -> s = h;
    cout

    Äänestä

  • teuro kirjoitti:

    #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.

    Äänestä

  • Johnnie83 kirjoitti:

    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.

    Äänestä

  • teuro kirjoitti:

    #include

    using namespace std;

    class A{
    public:
    string s;
    A(){}
    A(string h){
    this -> s = h;
    cout

    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.

    Äänestä

  • en_osaa_mitaan kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


tepppi kirjoitti:

Switch-case rakenteessa kun haluaa tehdä olion, niin Visual studio herjaa "see declaration of olio". Eikö case-osassa voi tehdä olioita?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu