Strona 1 z 1

Globalny wskaźnik na prywatną klasę

Napisane: poniedziałek, 26 grudnia 2011, 20:02
przez Colder
Witam wszystkich bardzo serdecznie.
Od jakiegoś czasu nęka mnie pewna dziwna sytuacja, mianowicie kod:

Code: Zaznacz cały

public class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}

class test
{
    public int abc;
    public test()
    {
        abc = 1;
    }
}

class test2
{
    int a;
    public test2()
    {
        this.a = qwe.aaa.abc;
    }
}
Wyrzuca błąd:
Inconsistent accessibility: field type 'test' is less accessible than field 'qwe.aaa'

A gdy tylko zmienię "public class qwe" na "class qwe" to wszystko działa, ale... dlaczego?

Pozdrawiam.

Re: Globalny wskaźnik na prywatną klasę

Napisane: wtorek, 27 grudnia 2011, 15:32
przez Morfidon
Można to rozwiązać też tak, że wystarczy dodać przed klasą test modyfikator public.

Jest napisane:
Inconsistent accessibility: field type 'test' is less accessible than field 'qwe.aaa'
co oznacza
Niespójna dostępność: pole typu 'test' jest mniej dostępne niż pole 'qwe.aaa "
muszą mieć one ten sam poziom dostępności.

Re: Globalny wskaźnik na prywatną klasę

Napisane: wtorek, 27 grudnia 2011, 20:54
przez Colder
No tak, te rozwiązanie rozumiem, jednakże chciałbym aby moja klasa była prywatna i miała np tylko jedną metodę publiczną do której będę się odwoływać przez ten publiczny "wskaźnik".

Jak to uzyskać?

Ale najciekawsze jest to że już znalazłem odpowiedź, zamieniłem

Code: Zaznacz cały

public class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}
Na :

Code: Zaznacz cały

class qwe
{
    static public test aaa;
    qwe()
    {
        aaa = new test();
    }
}
I błąd zniknął, wszystko działa, nie rozumiem tylko dlaczego? Wpadłem na ten pomysł przypadkiem testując i dlatego mnie to męczy.