CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z pracą między klasami...

Problem z pracą między klasami...

dział ogólny

Problem z pracą między klasami...

Nowy postprzez Slynx » sobota, 30 kwietnia 2011, 22:16

Cały czas trzymałem się zasady, że klasy podrzędne ( w strukturze przestrzeni nazw) podpinałem do klas nadrzędnych. I wszystko było w porządku. Jednak teraz okazało się, że w jednej funkcji potrzebuję mieć dostęp do klasy nadrzędnej. Podobny problem już poruszałem, to był mój pierwszy temat.
Cóż, jeśli zechcę dodać klasę nadrzędną poprzez "include" to wyrzuci mi masę błędów (nie wiem dokładnie z czego one wynikają, ale... tak już jest), Każdy kto "zinkludował" nawzajem klasy, a potem starał się w każdej wywołać metodę z klasy przeciwnej wie o co chodzi.

Tak bardziej praktyczniej, problem polega na tym, że w w główniej klasie po naciśnięciu jakiegoś tam buttona mam tworzone nowe okno (więc musi być include klasy odpowiedzialnej za nie), jednak w klasie danych jest funkcja, które również musi pracować na tym oknie (na nowej instancji). I do tego momentu jeszcze wszystko by działało, jednak, jak to klasa danych - jest dołączona do klasy głównej i klasy tego okna - wtedy mamy komplet błędów.
---
Tu jest przykład ilustrujący problem
Główna klasa programu:
KOD cpp:     UKRYJ  
#pragma once
#include "okno.h"
#include "data.h"

namespace temp1 {

        using namespace System;
        using namespace System::ComponentModel;
        using namespace System::Collections;
        using namespace System::Windows::Forms;
        using namespace System::Data;
        using namespace System::Drawing;


        public ref class Form1 : public System::Windows::Forms::Form
        {
        public:
                Form1(void)
                {
                        InitializeComponent();
                }

        protected:

                ~Form1()
                {
                        if (components)
                        {
                                delete components;
                        }
                }
        private: System::Windows::Forms::Button^  button1;
        private:

                System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

                void InitializeComponent(void)
                {
///
                }
#pragma endregion

        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
                         {
                                 okno^ ap = gcnew okno();
                                 ap->ShowDialog();
                                 temp1::data^ ad = gcnew temp1::data();
                                 ad->show();
                         }
        };
}


 


klasa danych
data.h
KOD cpp:     UKRYJ  
#pragma once
#include "okno.h"
namespace temp1{
public ref class data
{
public:
        data(void);
        Void show();
};
}
 


data.cpp
KOD cpp:     UKRYJ  
#include "StdAfx.h"
#include "data.h"
namespace temp1{
data::data(void)
{
}
Void data::show()
{
                        temp1::okno^ ok = gcnew temp1::okno();
                ok->ShowDialog();
}
}
 

i okno
KOD cpp:     UKRYJ  
#pragma once
#include "data.h"
//namespace


namespace temp1 {
        public ref class okno : public System::Windows::Forms::Form
        {
        public:
                okno(void)
                {
                        InitializeComponent();
                }

        protected:
                ~okno()
                {
                        if (components)
                        {
                                delete components;
                        }
                }
        private: System::Windows::Forms::Button^  button1;
        protected:

        private:
                System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
                void InitializeComponent(void)
                {
                }
#pragma endregion
        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
                         {
                                                                 temp1::data ^ ds = gcnew temp1::data();
                         }
        };
}

 


i wtedy program zasypie nas błędami

1>data.cpp
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'data' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'ds' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2061: syntax error : identifier 'data'
1>AssemblyInfo.cpp.



Jak to poprawić / ominąć ?

Aha, bo pewnie padnie takie pytanie. Po co wywoływać okno zarówna z klasy głównej jak i z klasy danych. W klasie danych musi ono być, bo na nim pracuje, a poza tym, wszystkie okna korzystają z klasy danych, czyli wystarczy, że dodam w tej klasie do include jedno z okien i kompilator zasypie mnie błędami. Tak więc nie ma to znaczenia.
Ostatnio edytowano niedziela, 1 maja 2011, 20:48 przez Slynx, łącznie edytowano 3 razy
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » niedziela, 1 maja 2011, 10:01

Zawartość data.h i data.cpp powinna być odwrotnie.

KOD cpp:     UKRYJ  
#include "okno.h"
#include "data.h"

Jeśli data.h załącza okno.h, to to pierwsze include jest zbędne.


...\okno.h(87) : error C2065: 'ds' : undeclared identifier


A gdzie to ds jest, bo nie widzę? :zawiedziony:


p.s. wklejaj kod bez niepotrzebnych z punktu widzenia problemu fragmentów.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » niedziela, 1 maja 2011, 20:44

Zawartość data.h i data.cpp powinna być odwrotnie.


Już poprawiłem, zarówno kod, bo nie było tej linijki ds (widocznie skopiowałem do schowka jeszcze przed jej dodaniem, potem wkleiłem i już nie zauważyłem);
Teraz wygląda ok.
Jeśli data.h załącza okno.h, to to pierwsze include jest zbędne.


ok, więc wycinam to i wtedy mam taki komplet błędów

1>temp1.cpp
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'data' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'ds' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2061: syntax error : identifier 'data'
1>okno.cpp
1>data.cpp
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'data' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2065: 'ds' : undeclared identifier
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2039: 'data' : is not a member of 'temp1'
1>c:\users\slynx\documents\visual studio 2008\projects\temp1\temp1\okno.h(87) : error C2061: syntax error : identifier 'data'
1>AssemblyInfo.cpp
1>Generating Code...

Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » niedziela, 1 maja 2011, 22:24

Już chyba tłumaczyłem Ci w innym wątku, co powinieneś zrobić przy tego typu zależnościach. Problemem jest to, że podczas kompilacji data.cpp kompilator wpierw załącza (data.h -> okno.h) i kompiluje klasę okno, ta z kolei - a dokładniej metoda button1_Click - potrzebuje definicji klasy data. Innymi słowy, po rozwinięciu wszystkich includów, Twój plik data.cpp wygląda tak:
KOD cpp:     UKRYJ  
/*----- include data.h ------*/

/*----- include okno.h ------*/
public ref class okno : public System::Windows::Forms::Form
{

        ...

        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
        {
                temp1::data ^ ds = gcnew temp1::data(); //<--- what the fuck is 'data'?!
        }
};
/*----- koniec okno.h ------*/

public ref class data
{
        ...
};

/*----- koniec data.h ------*/

data::data(void) { }

Void data::show() { ... }

Mam nadzieję, że widzisz i rozumiesz problem. Rozwiązanie masz we wspomnianym wątku.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Slynx
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » niedziela, 1 maja 2011, 22:50

KOD cpp:     UKRYJ  
        ref class data;
 

.. deklaracja zapowiadająca.
No fakt, mówiłeś już o tym. Jak się nie używa to się zapomina... To ułatwi parę problemów.
Thx,
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » niedziela, 8 maja 2011, 21:44

Swoją drogą, można to zrobić w ten sposób lub... rozłożyć klasy na pliki h i cpp. To też rozwiązuje problem. Wiem, że kiedyś miałem podobny problem i nie wiedziałem o czymś takim jak deklaracja zapowiadająca, to żeby go rozwiązać zamiast dodawać pliki nagłówkowe w pliku h, to dodawałem je w pliku cpp. I problem też znikał, bo tak jak wspomniałeś najpierw przelatuje po plikach h, a potem cpp.

Tak "anyway", rozwiązaniem tych wszystkich problemów (bo to nie był jedyny) było właśnie podzielenie wszystkich (wcześniej miałem podzielone tylko własne klasy, a klasy generowane przez VC zostawiałem jak były stworzone) klas pomiędzy pliki h i cpp. O ile dobrze pamiętam to C.Baron (w pierwszym temacie "[C++/CLI]Include i praca między formami...") mówił, że

Przede wszystkim to nie ma żadnego wymogu mówiącego, że klasy należy tworzyć w oparciu do dwa pliki - źródłowy i nagłówkowy. Wszystko można wrzucić do jednego pliku z rozszerzeniem H lub CPP.

No właśnie, można, ale przy "rozbujaniu" naszego projektu okazuje się, że pojawiają się problemy, których nie powinno być. Choć jedna rzecz mnie dziwi. Jeśli to o czym mówię, czyli rozpiska na pliki .h i .cpp jest standardem - a taki podział ma uchronić przed błędami których właśnie uświadczyłem - dlaczego VC++ nie wspiera tego ? Przecież gdyby tak było to wrzucałby puste konstruktory i właściwą przestrzeń nazw do pliku .cpp, a tymczasem zawsze jest on pusty. Trochę to dziwne...
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » niedziela, 8 maja 2011, 22:06

Być może dlatego, że piszesz w C++/CLI, a ten może posiadać pewne cechy tudzież nawyki wyniesione z C#. Z tego co pamiętam, bo klasy tworzę ręcznie, bez wspomagania kreatorów, VC++ robi podział na dwa pliki.

A, no i wielkość projektu nie ma tu znaczenia, ponieważ tu chodzi o relacje między klasami. Tego typu problem może zdarzyć się w małym projekcie dwuklasowym ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » niedziela, 8 maja 2011, 22:26

No tak, tak. Robi podział, ale robi podział i z niego nie korzysta i właśnie o tym mówię. A ja robię przez kreator, bo jest zwyczajnie szybciej, dwa-trzy kliknięcia i pliki stworzone, zwłaszcza jeśli chodzi o nowe okno (a nie pustą klasę).

A może to po prostu, zaraz po braku Intellisense dla C++/CLI w VS2010, był jeden ze sposobów na zamianę C++/CLI na C#... Zresztą tu nie ma dyskusji.
I warto zauważyć, że po rozłożeniu, designer ładuje się o wiele szybciej, zwłaszcza w przypadku dużych "zapchanych" okien.
I szczerze Ci powiem, że C# za każdym razem gdy miałem z nim do czynienia był o wiele prostszy. Ile to ja się głowiłem jak zapisać pewne bardziej skomplikowane elementy z C#... po prostu straszne. To potrafi być tak wnerwiające... kod w C# banalnie prosty, żadnych problemów, wszystko zrozumiałe i oczywiste, a przy próbie przepisania wychodzą Ci jakieś nieznane twory, bo sposoby zapisywania tego samego w C++/CLI dają wiele do... myślenia. No dobra, ja muszę się jeszcze podszkolić w kwestii dynamic i safe cast ; p ( a w "czystym" c++ robiło się to chyba tylko przez typ+pointer w nawiasie i obok obiekt na który miał rzutować (tak na 90 %;p)

A, no i wielkość projektu nie ma tu znaczenia, ponieważ tu chodzi o relacje między klasami. Tego typu problem może zdarzyć się w małym projekcie dwuklasowym

No widzisz, a ja się dopiero obudziłem po kilku tysiącach linijek kodu ; p

(Tak, wiem, że to nie dużo, ciągle słyszę na forach ile to set tysiącami linijek kodu muszą zarządzać w mega projektach, ale to jest mój pierwszy poważny projekt, i te 10k+ mi na razie wystarczy;p I tak zaczynam się gubić w kodzie, tj. zaczynam mieć problemy z szybkim wyszukiwaniem funkcji. Liczba funkcji w klasach daje o sobie znać. Wiem gdzie czego szukać, ale samo szukanie bywa czasochłonne)
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » poniedziałek, 9 maja 2011, 10:46

Robi podział, ale robi podział i z niego nie korzysta i właśnie o tym mówię.

Może nieprecyzyjnie się wyraziłem. Chodziło mi oczywiście o podział na pliki h i cpp z uwzględnieniem rozdziału implementacji metod od definicji klasy.

I szczerze Ci powiem, że C# za każdym razem gdy miałem z nim do czynienia był o wiele prostszy.

Tu ameryki nie odkryłeś. C# to nowszy język, pozbawiony niektórych wad czy też braków języka C++.

kod w C# banalnie prosty, żadnych problemów, wszystko zrozumiałe i oczywiste, a przy próbie przepisania wychodzą Ci jakieś nieznane twory, bo sposoby zapisywania tego samego w C++/CLI dają wiele do... myślenia.

Bo widzisz, jak się coś przepisuje na jakiś inny język, dobrze by było poznać ów język. Z tego co zauważyłem masz problemy z podstawami C++(CLI) (bez złośliwości), stąd ta irytacja u Ciebie ;) W sumie zastanawiam się po co Ty to piszesz w C++/CLI, jeśli sensowniej byłoby to napisać C# (ten język jest bardziej naturalny dla klas .NET'owych).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » poniedziałek, 9 maja 2011, 13:37

Może nieprecyzyjnie się wyraziłem. Chodziło mi oczywiście o podział na pliki h i cpp z uwzględnieniem rozdziału implementacji metod od definicji klasy.

No właśnie o to chodzi, że NIE rozdziela. Może jak piszesz w C# czy coś. W każdym bądź razie po wybraniu projektu windows forms pod C++/CLI, tworzy plik h i cpp, ale WSZYTKO i tak umieszcza w pliku h i właśnie o tym mówię, że to trochę dziwne. W pliku cpp umieszcza tylko include pliku .h. W takim wypadku można by stwierdzić, że pliki cpp w ogóle nie są potrzebne jeśli mają załączać tylko pliki .h. Równie dobrze mogą być tylko pliki .h, które będą siebie w razie potrzeby nawzajem załączać i tylko jeden plik .cpp projektu by to w ogóle skompilować. Tyle można wywnioskować po stworzeniu nowego projektu. Tworzy pliki z których nie korzysta.

Tu ameryki nie odkryłeś. C# to nowszy język, pozbawiony niektórych wad czy też braków języka C++.

Mi się bardzo podoba prostota tego języka, a zarazem ogromne możliwości. Jak patrzę ile trzeba było się namęczyć by coś stworzyć w C++/CLI, a jak oczywiste to jest w C#...

Bo widzisz, jak się coś przepisuje na jakiś inny język, dobrze by było poznać ów język. Z tego co zauważyłem masz problemy z podstawami C++(CLI) (bez złośliwości), stąd ta irytacja u Ciebie W sumie zastanawiam się po co Ty to piszesz w C++/CLI, jeśli sensowniej byłoby to napisać C# (ten język jest bardziej naturalny dla klas .NET'owych).


Wiesz... ja po prostu pewnego dnia siadłem i zacząłem w tym pisać. Bez żadnego przygotowania, bez przeglądania, po prostu nic. Miałem tylko tą wiedzę która została mi ze starego C++ Buildera 6 (2003), a wszystko co sprawiało problemy = msdn. I tylko na tym opiera się moja wiedza o C++/CLI, więc trudno bym znał każdy szczegół, itp.
Poza tym, jak ja teraz patrzę na ten stary temat "Include i praca między formami", to normalnie aż się dziwie, że takie rzeczy pisałem, takie teorie głosiłem i takie pytania zadawałem.
I do czasu gdy nie użyłem "^" jako referencji dalej uważałbym że to taki C++/CLI odpowiednik natywnego "*" ;p

Po co piszę ?
Napisać te kilka tysięcy linii kodu i teraz nagle zacząć wszystko przeprawiać do C# ? To byłby idiotyczny pomysł. Co innego skończyć projekt i potem pokusić się o próbę przeniesienia do C#.
Poza tym byłoby to czasochłonne. Mimo łatwości tego języka jak zawsze byłyby jakieś problemy, a nie chcę niepotrzebnie przedłużać pracy nad projektem. Poza tym, zasada jest taka, by najpierw projekt napisać, by wszystko działało jak należy, a dopiero potem zastanawiać się nad optymalizacjami.

I jeśli chodzi o C++/CLI to nie martw się, to nie irytacja. Nigdy nie mówiłem, że jestem programistą, ani nic z tych rzeczy. Podstawy języka to ja mam jedynie do natywnego, bo tego kiedyś się uczyłem, a w NET-owych to idę jak przez mgłę. No, ale potęgą programisty nie jest wykucie wszystkich zasad języka, wszystkich możliwych błędów, funkcji, kombinacji, czy czego tam jeszcze, ale umiejętność szukania odpowiedzi i rozwiązywania problemów. Czyli tak jak u mnie. Nic nie wiedziałem na temat klas NET-owych, ale jak potrzebowałem jakiejś funkcji to zamieniałem sobie jej nazwę na angielski, wpisywałem w msdn i --- jest ;)
...Choć fakt, odkąd przesiadłem się z Clippera '87 trochę się zmieniło ;p (Ehh... to były czasy, podstawówka - pierwszy program bazodanowy;p)
Ale tak jak mówiłem, to właśnie bardzo mnie zdziwiło jakby VC++ zrywał z zasadą podziału na pliki .h, .cpp I ICH PODZIAŁEM na definicje i deklaracje (no właśnie,w końcu nauczyłem się to rozróżniać;p)
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » poniedziałek, 9 maja 2011, 13:59

No właśnie o to chodzi, że NIE rozdziela. Może jak piszesz w C# czy coś.

Jak może rozdzielać w C#, jeśli tam nie ma takiego podziału? ;)

Tworzy pliki z których nie korzysta.

Dlatego pisałem, że być może jest to następstwo tego, że piszesz w C++/CLI, a nie typowym C++. Ja mam wersję VC++2005, tu kreator tworzy mi klasę z podziałem na pliki h i cpp, gdzie w tym drugim pliku mam definicje metod (chyba że zaznaczę, że ma być inline). Mówię o projekcie C++.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z pracą między klasami...

Nowy postprzez Slynx » poniedziałek, 9 maja 2011, 17:22

Jak może rozdzielać w C#, jeśli tam nie ma takiego podziału?

Nie wiem, w życiu nie tworzyłem nowego projektu C#, zawsze tylko przerabiałem cudzy kod ; p
Dlatego pisałem, że być może jest to następstwo tego, że piszesz w C++/CLI, a nie typowym C++. Ja mam wersję VC++2005, tu kreator tworzy mi klasę z podziałem na pliki h i cpp, gdzie w tym drugim pliku mam definicje metod (chyba że zaznaczę, że ma być inline). Mówię o projekcie C++.


No właśnie, a zamiast C++ class, weź CLR->Windows Form i zobacz co wtedy Ci stworzy. Bo właśnie o tym cały czas mówiłem.
Avatar użytkownika
Slynx
Mądrosław
Mądrosław
 
Posty: 350
Dołączył(a): piątek, 17 grudnia 2010, 21:59
Podziękował : 11
Otrzymał podziękowań: 0
System operacyjny: Windows 7 32
Kompilator: Visual C++ 2005; Visual C++ 2008; Visual C++ 2010; Visual C# 2010;
Gadu Gadu: 0
    Windows 7Chrome

Re: Problem z pracą między klasami...

Nowy postprzez polymorphism » poniedziałek, 9 maja 2011, 17:52

Pisałeś ogólnie o VC i klasach, więc Ci pokazałem, że ten podział w przypadku klasycznego C++ jest. Ba, podejrzewam, że nawet w projektach CLI zwykła klasa jest rozdzielana.

Nie wiem, w życiu nie tworzyłem nowego projektu C# (...)

Ja też.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 35 gości

cron