Dlaczego nie wywołuje funkcji - proste pomóżcie

0

Gdzie jest bład - proste pomóżcie jestem początkujący!!
Oto kod - nie wiem jak wywołać funkcję rusyj po podaniu wysokości h - błedy wywala w dwoch ostatnich linijkach przy nawiasie rysuj(h). Pomóżcie prosze:

using System;
using System.Collections.Generic;
using System.Text;

namespace MojaPrzestrzen
{
namespace PrzestrzenTrojkatow
{
public class Trojkat
{
void rysuj(int h)
{
int k, w, p, a;

            a = 1;
            p = 1;
            k = 1;
            w = 1;
            Console.Write("\n\n\t\t\t\t\t");
            do
            {
                while (k < a) { Console.Write("\b"); k++; }
                while (p < k) { Console.Write("###\b"); p++; }
                if (k == w) { Console.Write("#\n\t\t\t\t\t"); k = 1; p = 1; w++; a++; }
            } while (w <= h);
            Console.ReadKey();
        }

    }

}
namespace PrzestrzenKwadratow
{
    public class Kwadrat
    {
        void rysuj(int h)
        {
            int b, c;
            b = 1;
            c = 1;
            Console.Write("\n\n\t\t\t\t\t");
            do
            {

                while (b < h) { Console.Write("#"); b++; }
                if (b == h) { Console.Write("\n\t\t\t\t\t"); b = 1; c++; }
            } while (c <= h);
            Console.ReadKey();
        }

    }

}


class Program
{
    static void Main(string[] args)
    {
        int h;

        Console.WriteLine("Podaj wysokosc trojkat a zarazem i kwadratu h = ");
        h = Convert.ToInt32(Console.ReadLine());

        MojaPrzestrzen.PrzestrzenTrojkatow.Trojkat.rysuj(h);
        MojaPrzestrzen.PrzestrzenKwadratow.Kwadrat.rysuj(h);
        Console.ReadKey();

    }
}

}

0

Napisz jakie bledy...

0

Komunikat o błędzie:

Error 1 'MojaPrzestrzen.PrzestrzenTrojkatow.Trojkat.rysuj(int)' is inaccessible due to its protection level D:\PWSZ\Brylak\Programowanie w internecie\Lista2\ConsoleApplication1\ConsoleApplication1\Program.cs 66 56 ConsoleApplication1

dwa razy takie cos wywala.

0

Czyli po polsku:
MojaPrzestrzen.PrzestrzenTrojkatow.Trojkat.rysuj(int) jest niedostepna z powodu poziomu ochrony. Jak chcesz korzystac z tej metody na zewnatrz to ustaw jej modyfikator public.

0

Dzięki za wytłumaczenie ale mam prosbe - mozesz skopiowac ten kod i poprawic go jak wedlug Ciebie powinien wyglądąc - jestem nowy w C#.

0

Masz:

public class Trojkat
        {
            void rysuj(int h)

zrób z tego:

public class Trojkat
{
    public void rysuj(int h)
0

Zrobiłem jak kazałeś ale teraz wywala inny błąd:

An object reference is required for the nonstatic field, method, or property 'MojaPrzestrzen.PrzestrzenTrojkatow.Trojkat.rysuj(int)'

I dalej nie działa :-/ Masz może jeszcze jakiś pomysł co dalej z tym zrobić????

0

OKi już wiem:) udało sie w końcu nie było jeszcze słowa static przed metodą:) Dzięki za pomoc i pozdrawiam:)

0

metody rysuj() są niestatyczne - to oznacza, że można je wywołać tylko na rzecz obiektów klasy Kwadrat, Trojkat. Tak więc do wyboru masz:

  • w metodzie Main utworzyć obiekty odp. klas i wywołać dla nich metody, np.
    new Trojkat().rysuj(h)

  • oznaczyć metody jako statyczne, aby można je wywołać bez potrzeby tworzenia instancji klasy, np.

public static void rysuj(int h)
            {
                ...
            }

btw, czytałeś coś w ogóle na temat obiektowości?

1 użytkowników online, w tym zalogowanych: 0, gości: 1