łączenie klas z dwóch plików?

0

Witam ponownie :D. Tu ponownie laik w programowaniu, mam problem z łączeniem klas obu plików. Nie wiem czy dobrze to robię ogólnie. Mam 2 pliki .cs w jednym jest wywoływana funkcja w drugim jego zmienne. I gdy załóżmy mam w tym drugim namespace "nazwa" i wpisze w pierwszym

nazwa.Program domek = new nazwa.Program()

to podkreśla mi klase "Program" i kompilator nie odpala. Nie działają również inne funkcje jak pobieranie zmiennej z pierwszego pliku (chociaż tu się domyślam, być może dlatego że nie mam funkcji return).
Proszę o jakąś poradę jak łączyć te 2 pliki aby dobrze działały. 
Programy konsolowe jak coś. Nie wiem czy coś jeszcze miałem dopisać, jak o czym zapomniałem to przepraszam. Z góry dziękuję za odpowiedź
1

Mam 2 pliki .cs w jednym jest wywoływana funkcja w drugim jego zmienne.
nic z tego nie zrozumialem, pokaz kod

new nazwa.Program()
to nie ma absolutnie zadnego sensu, chyba ze nazwa to statyczna klasa a program to jej wewnetrzna publiczna klasa (w co watpie, a jezeli tak jest to zmien to)

(chociaż tu się domyślam, być może dlatego że nie mam funkcji return).
podkresla jakies slowo to nie jest komunikat bledu, wszystkowiedzacych wrozek szukaj na innym portalu

Proszę o jakąś poradę jak łączyć te 2 pliki aby dobrze działały.
w c# nie potrzebujesz laczyc plikow (a jezeli robisz na partialach to tez to usun)

Programy konsolowe jak coś. Nie wiem czy coś jeszcze miałem dopisać, jak o czym zapomniałem to przepraszam. Z góry dziękuję za odpowiedź
zapomniales o kodzie. Pokaz caly kod jeden i drugi i komunikat bledu
Nie masz za co przepraszac

0

To jest kod z pliku o nazwie program

> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using System.Threading.Tasks;
> 
> 
> 
> namespace Program
> {
>     public class Program
>     {
>         public static void Main()
>         {
>             Punkt.Punkt punkt1 = new Punkt.Punkt();
>             punkt1.x = 100;
>             punkt1.y = 200;       
>             Console.WriteLine("Wspolrzedna x = " + punkt1.PobierzX());
>             Console.WriteLine("Wspolrzedna y = " + punkt1.PobierzY());
> 
> 
>         }
> 
>     }
> }
> 

A to jest kod z pliku o nazwie punkt

> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using System.Threading.Tasks;
> 
> 
> namespace Punkt
> {
>     class Punkt
>     {
>        public int x;
>        public int y;
> 
>     }
> }
> 
 

Nw może mi się coś pomyliło przy pisaniu z książki albo coś.

1
  • gdzie masz funkcje PobierzX() dla klasy Punkt?
  • nie uzywasz namespace Punkt w Program a tam masz zdeklarowana klase
0

Jak zmienie namespace na "Punkt" w pliku Program to nadal podkreśla mi "Punkt" a przecież odwołuje się cały czas do tego pliku o nazwie Punkt, no i do jego klasy. A funkcje PobierzX() jak i PobierzY() dopisałem i już nie podkreśla. Mimo iż dopisałem go w pliku Punkt. Przepraszam za zawiłość w tym poście

1

nie mow co zrobiles, tylko mow co zrobiles i pokaz kod.

0

Do tego dodałem funkcje pobierania x oraz y,

> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using System.Threading.Tasks;
> 
> 
> namespace Punkt
> {
>     class Punkt
>     {
>        public int x;
>        public int y;
> 
>          int PobierzX()
>         {
>             return x;
>         }
>         int PobierzY()
>         {
>             return y;
>         }
>     }
> }

A tutaj zmieniłem namespace na "Punkt"

> using System;
> using System.Collections.Generic;
> using System.Linq;
> using System.Text;
> using System.Threading.Tasks;
> 
> 
> 
> 
> namespace Punkt
> {
>     public class Program
>     {
>         public static void Main()
>         {
>             Punkt.Punkt punkt1 = new Punkt.Punkt();
>             punkt1.x = 100;
>             punkt1.y = 200;       
>             Console.WriteLine("Wspolrzedna x = " + punkt1.PobierzX());
>             Console.WriteLine("Wspolrzedna y = " + punkt1.PobierzY());
>         }   
>     }
> }

I teraz po tym przestało podkreślać tylko PobierzX() i PobierzY()

1
  • nie zmienia sie przypadkowo namespacow tylko sie ich uzywa (naprawiles blad, ale to co robisz jest brzydkie z prespektywy kodu)
  • funkcje sa prywatne wiec nie sa dostepne musisz dodac modyfikator public

Nie wiem z czego to sie uczysz, ale rzucilbym to co masz w cholere skoro takie pytania zadajesz i nie bylo to wyjasnione jeszcze

0

Haha, dziękuję za odpowiedź, a jeśli już to można prosić o jakąś porządną książkę? Lub cokolwiek gdzie można się nauczyć wartego uwagi. Ogolnie jestem początkujący, więc nie ogarniam. A co do kodu dodałem public. A w kodzie jak było tak nadal jest podkreślone i kompilator nie chce tego odpalić. Jak zwykle wyskakuje mi jakiś problem :/. Ponownie z góry dziękuję za odpowiedź

> public class Punkt
>     {
>        public int x;
>        public int y;
> 
>          int PobierzX()
>         {
>             return x;
>         }
>         int PobierzY()
>         {
>             return y;
>         }
>     }
0

dodales public do klasy nie do funkcji

    public class Punkt
    {
       private int x;
       private int y;
 
        public int PobierzX()
        {
            return x;
        }
 
        public int PobierzY()
        {
            return y;
        }
    }

mnie nie pytaj o ksiazki, nie uczylem sie z ksiazek

0

Może po prostu ominę ten dział bo coś mnie trafia, można się pózniej nauczyć tej "kompilacji jednostkowej"? Bo teraz stanę na tym, a błąd dalej będzie, nawet po dodaniu tego co wysłałeś, to błąd dalej jest.

1

a skad mam wiedziec o czym tam jest i co jest tam napisane?

https://ideone.com/ESf4i1

jak widzisz dziala

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