Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi?

  • 5 odgovora
  • 3.283 pregleda

Najnovija ↓

C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi? 19.08.2008. u 21:28 · pre 221 mesec #1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Subclassing
{
class Program
{
static void Main(string[] args)
{
Rottweiler butch = new Rottweiler("Butch") as Dog;
Spaniel mac = new Spaniel("Mac", "yips") as Dog;
butch.Bark();
mac.Bark();
butch.DoYourThing();
mac.DoYourThing();
}
}
class Dog
{
protected string _name;
protected string _sound;
public Dog(string name)
{
_name = name;
_sound = "barks";
}
public Dog(string name, string sound)
{
_name = name;
_sound = sound;
}
public void Bark()
{
Console.WriteLine("{0} {1} at you", _name, _sound);
}
public virtual void DoYourThing()
{
}
}
class Rottweiler : Dog
{
public Rottweiler(string name) : base(name) { }
public Rottweiler(string name, string sound) : base(name, sound) { }
public override void DoYourThing()
{
Console.WriteLine("{0} snarls at you, in a very menacing fashion!", _name);
}
}
class Spaniel : Dog
{
public Spaniel(string name) : base(name) { }
public Spaniel(string name, string sound) : base(name, sound) { }
public override void DoYourThing()
{
Console.WriteLine("{0} drools all over you, then licks you into submission!", name);
}
}
}



Prijavljuje mi problem, kaze da li vam nedostaje kastovanje...
Error 1 Cannot implicitly convert type 'Subclassing.Dog' to 'Subclassing.Rottweiler'. An explicit conversion exists (are you missing a cast?) D:\Documents and Settings\LIVADA\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 12 32 ConsoleApplication1
Neko objasnjenje?
Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi? 19.08.2008. u 22:28 · pre 221 mesec #2
Code:

Rottweiler butch = new Rottweiler("Butch") as Dog;
Spaniel mac = new Spaniel("Mac", "yips") as Dog;


Ovo ne moze ovako, polimorfizam ne funkcionise u tom smeru, implicitni cast ide ka nasledjenoj klasi (as Dog ti nije potrebno):

Code:

Dog butch = new Rottweiler("Butch");
Doc mac = new Spaniel("Mac", "yips");
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi? 20.08.2008. u 02:17 · pre 221 mesec #3
E hvala ti, ma ovo mi kod iz tuta jednog i sad ono ne kapiram zasto ne radi, posto nikako ne kapiram sta zapravo sta radi, a najbolje ucim kad pokrenem program i onda eksperementisem, medjutim nije hteo da radi...
Sad ima jos jedan problem, pomalo nelogican...
Error 1 The name 'name' does not exist in the current context D:\Documents and Settings\LIVADA\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs 59 77 ConsoleApplication1

Code:
 class Spaniel : Dog
    {
        public Spaniel(string name) : base(name) { }
        public Spaniel(string name, string sound) : base(name, sound) { }
        public override void DoYourThing()
        {
            Console.WriteLine(
                "{0} drools all over you, then licks you into submission!", name);
        }
    }


Sad kao on ne postoji il sta vec...
Probao sam da promenim da bude kao i u prethodnoj klasi sa _, ali ne radi....

E sta zapravo znaci ta _ (donja crta pored promenjive)??
Prvi put vidim upotrebu nje u programskom kodu, pa sam pomalo zbunjen, a verovatno ima veliku primenu...
Re: C# Problem kod konvertovanja tipa, fali kastovanje.... Sta uraditi? 20.08.2008. u 09:42 · pre 221 mesec #4
Nema nikakvu primenu, samo je validan karakter za identifikator pa moze da se koristi u istom, ne vuce sa sobom nikakvo posebno procesiranje.

Greska tu javlja zato sto je u baznoj klasi deklarisan _name a ti u Spaniel.DoYourThing koristis name, koji naravno ne postoji. Treba da promenis samo tu u _name, slicno kao sto je u Rtowailer klasi.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme