Autor Wątek: XNA Błąd przy wypełnianiu pól obiektu  (Przeczytany 1748 razy)

Offline giersz2

  • Użytkownik

# Sierpień 15, 2009, 19:02:25
Najpierw zdefiniowałem klasy:
enum enWarstwa1
    { pusty, drzewo1, drzewo2, drzewo3 }
    enum enPowieszchnia
    { pusty, trawa, woda, pustynia }
    enum enPotwor
    { pusty, wilk }
    public class clsPowieszchnia
    {
        public enPowieszchnia enPow; //linia 29
        public bool ruch;
        public string nazwa;
    }
    public class clsWarstwa1
    {
        public enWarstwa1 enWar; //linia 35
        string nazwa;
    }
    public class clsPotwor
    {
        public enPotwor enPot; //linia 40
        string nazwa;
    }
    public class clsPole
    {
        public clsPowieszchnia powieszchnia;
        public clsWarstwa1 warstwa1;
        public clsPotwor potwor;
        public clsPole()
        {
        }
    }
W definicji klasy Game1 stworzyłem obiekty:
public class Game1 : Microsoft.Xna.Framework.Game
    {
       
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

        clsPowieszchnia traw = new clsPowieszchnia();
        traw.enPow = enPowieszchnia.trawa; //linia 66
        traw.ruch = true; //linia 67
    ...
Pojawiły się błędy:
Error   1   Invalid token '=' in class, struct, or interface member declaration   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   66   20   ots gra
Error   2   Invalid token ';' in class, struct, or interface member declaration   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   66   42   ots gra
Error   3   Invalid token '=' in class, struct, or interface member declaration   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   67   19   ots gra

Co jest powodem pojawiania się tych błędów?

edit:
Kolejne błędy pojawiły się gdy skasowałem linie 66  i 67 (poprzednie znikły oczywiście):

Error   1   Inconsistent accessibility: field type 'ots_gra.enPowieszchnia' is less accessible than field 'ots_gra.clsPowieszchnia.enPow'   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   29   31   ots gra

Error   2   Inconsistent accessibility: field type 'ots_gra.enWarstwa1' is less accessible than field 'ots_gra.clsWarstwa1.enWar'   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   35   27   ots gra

Error   3   Inconsistent accessibility: field type 'ots_gra.enPotwor' is less accessible than field 'ots_gra.clsPotwor.enPot'   d:\Visual Studio 2008\Projects\ots gra\ots gra\Game1.cs   40   25   ots gra

Co się dzieje? Przecież przecież stworzyłem normalne pola typu wyliczeniowego  ???
« Ostatnia zmiana: Sierpień 15, 2009, 19:10:46 wysłana przez giersz2 »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kos

  • Użytkownik
    • kos.gd

# Sierpień 15, 2009, 19:09:00
Nie, żebym znał się na C#, ale nie powinieneś wrzucić tych przypisań do konstruktora?

Offline giersz2

  • Użytkownik

# Sierpień 15, 2009, 19:14:53
Też niezbyt się znam, dopiero zaczynam. Przeniosłem do konstruktora i działa ;D. Ale nadal pojawiają się te kolejne błędy. Proszę o pomoc.
« Ostatnia zmiana: Sierpień 15, 2009, 20:59:23 wysłana przez giersz2 »

Offline Ciunkos

  • Użytkownik
    • Black Sheep

# Sierpień 15, 2009, 22:43:14
Kod: (csharp) [Zaznacz]
public enum enWarstwa1
    { pusty, drzewo1, drzewo2, drzewo3 }
public enum enPowieszchnia
    { pusty, trawa, woda, pustynia }
public enum enPotwor
    { pusty, wilk }
Pododawaj public przed enumami.
Jeśli nie dodasz to będą mogły one być tylko prywatnymi składowymi klas. Jeśli dasz słówko public, wszystko będzie tak jak planowałeś. Też niedawno miałem te błędy ;)

Offline giersz2

  • Użytkownik

# Sierpień 15, 2009, 22:56:29
A, rozumiem. Poprawiłem i działa. Dzięki za pomoc  ;)