Paraméterátadás probléma

Paraméterátadás probléma
2012-04-04T13:30:32+02:00
2012-04-04T15:21:47+02:00
2022-08-16T10:41:49+02:00
senkif
Meg szertném hívni a seged.adatlapot, de állandóan paraméter hibákat ad ki. Hova kell beírni a paramétert (Karakter.karakter_főosztály kar) és miért oda?


using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sb { class Fo { public Fo() { Karakterek.Karakter_főosztály_ kar = new Karakterek.Karakter_főosztály_(); sajat_letrehozas(); seged.fo_menü(); Console.ReadKey(); } public static void sajat_letrehozas() { int fajta; Karakterek.Karakter_főosztály_ sajat = new sb.Karakterek.Karakter_főosztály_(); seged.karakter_menü(); fajta = Convert.ToInt32(Console.ReadLine()); switch (fajta) { case 1: sajat = new Karakterek.Ork(); break; } Console.ReadKey(); } public static void fo_menü_választas(kar) { int valasz; valasz = Convert.ToInt32(Console.ReadLine()); switch(valasz) { case 1: seged.adatlap(kar); Console.ReadKey(); break; }


using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sb { class seged { public static void karakter_menü() { Console.WriteLine(@" Válassz magadnak karaktert! 1. Ork 2. Ember 3. Tünde 4. Törpe"); } public static void fo_menü() { Console.WriteLine(@" Mit szeretnél csinálni? 1. Adatlapot megnézni"); Console.ReadLine(); } public static void adatlap(Karakterek.Karakter_főosztály_ kar) { Console.WriteLine(@" Fajta: {0} ", kar.azonosito ); Console.ReadKey(); } } }
Mutasd a teljes hozzászólást!
hát ez az - mondjuk egy karaktert?
attól, hogy az eljárás leírásánál paraméterként a "sajat" nevet használod, és később is a sajat-ra hívod meg, attól azt még nem fogja felülírni.

ami neked kell, az az egy ilyen módosítás:

public static Karakterek.Karakter_főosztály_ sajat_letrehozas() { int fajta; Karakterek.Karakter_főosztály_ temp = new sb.Karakterek.Karakter_főosztály_(); seged.karakter_menü(); fajta = Convert.ToInt32(Console.ReadLine()); switch (fajta) { case 1: temp = new Karakterek.Ork(); break; } Console.ReadKey(); //ezt sem tudom miért kell return temp; }

feljebb, a hívásnál pedig:

sajat=sajat_letrehozas();
Mutasd a teljes hozzászólást!

  • Az adatlap paraméterének egy karaktert kell átadnod, és ennek az átadott karakternek az azonosítóját fogja kiírni.
    Mutasd a teljes hozzászólást!
  • Azt a programrészt is meg kéne mutatnod, ahol egy Fo típusú objektum fo_menü_választas() metódusát hívod meg. Ugyanis ott adod át neki a kar-t. csakhogy a fo_menü_választas(kar) deklarációban nem adtad meg a kar típusát, ezt pótolnod kell.
    Mutasd a teljes hozzászólást!
  • A fo_menu_valasztast a fo metodusban hívom meg a legvégén, de nem tudom hogy oda milyen paraméter kell.
    Mutasd a teljes hozzászólást!
  • Most egy picit átalakítottam: így most már nem ír ki hibát,de nem hozza be az adatlapot hanem rögtön kilép, lehet hogy rossz a paraméterátadás?


    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sb { class Fo { public Fo() { Karakterek.Karakter_főosztály_ sajat = new sb.Karakterek.Karakter_főosztály_(); sajat_letrehozas(sajat); seged.fo_menü(); Console.ReadKey(); fo_menü_választas(sajat); } public static void sajat_letrehozas(Karakterek.Karakter_főosztály_ sajat) { int fajta; seged.karakter_menü(); fajta = Convert.ToInt32(Console.ReadLine()); switch (fajta) { case 1: sajat = new Karakterek.Ork(); break; } Console.ReadKey(); } public static void fo_menü_választas(Karakterek.Karakter_főosztály_ sajat) { string valasz; valasz = Console.ReadLine(); switch(valasz) { case "1": seged.adatlap(sajat); Console.ReadKey(); break; }


    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sb { class seged { public static void karakter_menü() { Console.WriteLine(@" Válassz magadnak karaktert! 1. Ork 2. Ember 3. Tünde 4. Törpe"); } public static void fo_menü() { Console.WriteLine(@" Mit szeretnél csinálni? 1. Adatlapot megnézni"); Console.ReadLine(); } public static void adatlap(Karakterek.Karakter_főosztály_ kar) { Console.WriteLine(@" Fajta: {0} ", kar.azonosito ); Console.ReadKey(); }
    Mutasd a teljes hozzászólást!
  • seged.fo_menü();

    itt kéne paramétert megadnod, olyat, amilyet lentebb a metódusnál megadsz.
    Ahogy Árnyék írta, itt kifelejtetted a paraméter típusát:
    public static void fo_menü_választas(kar)

    De mivel ezt írod:
    seged.adatlap(kar);

    és itt a fo_menu_választásnak átadott paramétert passzolod tovább a seged.adatlap-nak, ezért ugyanolyan típusúnak kell lennie, mint amit az adatlap vár, azaz Karakterek.Karakter_főosztály_

    Szóval így valamivel helyesebb lenne a dolog:
    public static void fo_menü_választas(Karakterek.Karakter_főosztály_ kar)
    Mutasd a teljes hozzászólást!
  • De ahogy átalakítottam az most akkor jó? Mert hibát nem ír ki. De viszont nem jeleníti meg az adatlapot sem.
    Mutasd a teljes hozzászólást!
  • Van itt több érdekes dolog is.
    Pl ez a sajat_letrehozas nem ad vissza semmit?


    Mutasd a teljes hozzászólást!
  • Semmit nem ad vissza. Miért mit kéne visszaadnia?
    Mutasd a teljes hozzászólást!
  • hát ez az - mondjuk egy karaktert?
    attól, hogy az eljárás leírásánál paraméterként a "sajat" nevet használod, és később is a sajat-ra hívod meg, attól azt még nem fogja felülírni.

    ami neked kell, az az egy ilyen módosítás:

    public static Karakterek.Karakter_főosztály_ sajat_letrehozas() { int fajta; Karakterek.Karakter_főosztály_ temp = new sb.Karakterek.Karakter_főosztály_(); seged.karakter_menü(); fajta = Convert.ToInt32(Console.ReadLine()); switch (fajta) { case 1: temp = new Karakterek.Ork(); break; } Console.ReadKey(); //ezt sem tudom miért kell return temp; }

    feljebb, a hívásnál pedig:

    sajat=sajat_letrehozas();
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd