Skocz do zawartości

marcinEc

Stały użytkownik
  • Postów

    56
  • Dołączył

  • Ostatnia wizyta

Osiągnięcia marcinEc

Newbie

Newbie (1/14)

0

Reputacja

  1. Pouczcie się jeszcze C++ lepiej. Czym się różnic deklaracja od definicji, i co można zrobić z niekompletnym typem, a czego nie. http://forum.4programmers.net/viewtopic.php?id=73942
  2. Ups, mały błąd, powinno być: friend drzewo<T> &operator+<>(drzewo< T> &, T );bez "T" w "<>" po operator+, powinno działać...
  3. 1. To może ci pomóc wybrać właściwy rodzaj relacji pomiędzy wzorcem klasy, a funkcją zaprzyjaźnioną: http://publib.boulder.ibm.com/infocenter/m...d_templates.htm 2. A widziałeś co pokazuje kompilator? a.cpp:12: warning: friend declaration `drzewo<T>& operator+(drzewo<T>&, T)' decl ares a non-template function a.cpp:12: warning: (if this is not what you intended, make sure the function tem plate has already been declared and add <> after the function name here) -Wno-no n-template-friend disables this warning Tak naprawdę kompilator nie wie co TY chcesz zrobić, ale mówic ci co możesz zrobić :) Przerzuć deklarację operatora+ PRZED deklaracje klasy drzewo i dodaj "<>" po nazwie, to wtedy kompilator będzie wiedział, że chcesz użyć szablonu funkcji: [....]//!!template<class T> class drzewo; // forward declaration!//!! najpierw szablon funkcji//poczatek przeciazonego +template< class T >drzewo< T > &operator+( drzewo< T > &tree1 , T dana ) { tree1->wstaw_dane( dana );}//!!template< class T > class drzewo { friend class wierzcholek<T>; friend drzewo< T > &operator+<T>(drzewo< T> &, T ); //!! tu zmiana[.....]Powinno pomóc. 3. Żeby już wszystko wyłapać: In member function `bool drzewo<T>::wstaw_dane(const T&)': warning: no return statement in function returning non-void Nie zwracasz wartości! 4. W C++ raczej nie powinno używać sie NULL, tylko '0' (zero)
  4. marcinEc

    Generator Kodu Uml

    Hmmm... Dziwne macie podejście ludzie. C++ jest językiem i ma swój kod, zgadza się? Ale UML jest językiem i nie ma swojego kodu??!! Bzdury opowiadacie. Jeśli komuś diagram nie pasuje do kodu to może niech spojrzy na generator kodu ANSI C++ w Rational Rose, w helpie są ładne przykłady kodu UML zapisane tekstowo w stylu: class JakaśKlasa [CodeName=SomeClass] atribute m_i:int itp. Dokładnie nie mogę podać w tej chwili niestety ale chyba chwytacie ten KOD? :D Co do rev-engineeringu to wystarczy kupić Rose'a, MagicDraw UML-a, itp. :) Dla DIA są AutoDia, cpp2dia, itp. Druga sprawa: faktycznie nauczcie się zadawać sensowne pytania :/ EOT
  5. Pytanie powinno brzmieć: jak w Windows API obsługiwać tray bo jestem tak zielony, że nie potrafię przeczytać helpa/msdna-a ALBO jak zrobić obsługę tray w MFC... bo jak to jest VC++ to nie wiadomo... WinAPI patrz: Shell_NotifyIcon MFC: na codeguru.com jest klasa A tak przy okazji: tam się nie umieszcza programu (w sensie, że on tam jakoś "wchodzi") tylko IKONKĘ, a okno programu zostaje ukryte kiedy trzeba.
  6. marcinEc

    Wątki W C/c++

    W standardzie nie ma czegoś takiego jak wątek. Wątki zależą np. od systemu operacyjnego. Jakie szukanie takie znajdowanie... http://www.accu.org/c++sig/public/threads/...ndard_C++_1.htm
  7. Jakkolwiek UML nie jest nastawiony na konkretny język o tyle istnieją generatory kodu/moduły reverse engineering dla odpowiedniego języka. Dla Delphi: ModelMaker for Borland Delphi http://www.modelmakertools.com/ Generator diagramów z kodu (reverse engineering): ESS-MODEL http://essmodel.sourceforge.net/ [Nie używałem, nie znam się ;)]
  8. b.cpp: In function `int main()': b.cpp:17: error: non-lvalue in decrement Nie umiesz czytać inglisz? ;) Zamiast --n1.wypisz(); ma być (--n1).wypisz(); Nie zmienia to faktu, że program jest źle napisany... Poza tym czy wiesz , że przeciążone operatory ++ i -- nie zachowują się tak jak myślisz jeżeli chodzi o pre- i postfix? Operator przyrostkowy (post) jest stosowany natychmiast. #include <iostream>using namespace std;class A{public: int val; A(int v) {val=v;} A& operator++() { val++; return *this;} A& operator++(int) { val++; return *this;} void print() {cout<<val<<endl;}};int main(){ A a(55); a.print(); a++.print(); //56 (++a).print(); // i tak tez nie :> A c(55); c.print(); A d = c++; //56 d.print(); (++c).print(); int b=55; cout << b << endl; cout << b++ << endl; //55 !! cout << ++b << endl; }Wynik: 55 56 !! 57 55 56 !! 57 55 55 !! a tu ok :) 57
  9. 1. Sprawdź czy rzeczywiście przekazano argument dla programu... argc... 2. Sprawdź czy otwarto plik... po fopen(). 3. Metoda z fseek() jest dobra :) 4. Pod Windows można użyć jeszcze funkcji API GetFileSize(). 5. Tam gdzie jest to możliwe można także użyć szukania plików findfirst()/findnext() [lub odpowiedników] i pobrać informację o znalezionym pliku. 6. Tak jak w przypadku 5 - na pewno jest w MinGW i MSVC++: funkcje filelength, _filelength() i _filelengthi64 z <io.h>
  10. marcinEc

    Operatory

    Operator '-' może być dwu- jak i jednoargumentowy. Zależnie od ilości argumentów operatora (dwa lub jeden) taki zostanie użyty do obliczenia wyrażenia. Nie wiem gdzie widzisz problem... class A{ int a;public: A() { a = 11; } friend A operator-(A &a);};// jako funkcja zaprzyjaźniona o jednym argumencieA operator-(A &a){ A w; w.a=-a.a; return w;}Albo jako niestatyczną, bezparametrową funkcję składową, czyli operator-() w klasie.
  11. Poprawne jest ale nie spełnia warunków podanych przez Ciebie: gdzie jest rodzaj przechowywanych danych?
  12. Zapis: - zapisujesz rozmiar tablicy (tu dajesz spację albo '\n') - zapisujesz wszystkie liczby z tablicy (rozdzielone przecinkiem albo spacją). i tyle :) Czyli, dla tablicy {1,2,3,4} dostaniesz: "4 1 2 3 4" Odczyt: - wczytujesz pierwszą liczbę: rozmiar tablicy - alokujesz pamięć na tablicę (rozmiar już masz) - wczytujesz po kolei liczby i wpisujesz do tablicy. Ponieważ wiesz ile liczb masz wczytać (znasz rozmiar tablicy) od razu możesz wyłapać błąd w pliku danych (np. za mało liczb)
  13. Naucz się lepiej programować w C/C++. A w C++ to będzie: [php:1:543e445da4] #include <iostream> #include <fstream> using namespace std; class Pytanie { public: void read(istream &is); void print(ostream &o); protected: string pyt; string a,b,c; char odp; }; void Pytanie::read(istream &is) { const streamsize bufsize = 1024; // to juz do wyboru zeby sie zmiescilo :> char buf[bufsize] = {0}; is.getline( buf, bufsize ); pyt = buf; is.getline( buf, bufsize ); a = buf; is.getline( buf, bufsize ); b = buf; is.getline( buf, bufsize ); c = buf; is.getline( buf, bufsize ); // zjadamy cala linie :) odp = buf[0]; } void Pytanie::print(ostream &o) { o << pyt << 'n'; o << a << 'n' << b << 'n' << c << endl; o << "Odp: " << odp << endl; } int main() { Pytanie p; ifstream ff("quiz.sub"); p.read( ff ); p.print( cout ); } [/php:1:543e445da4]
  14. Dżizas! Co to za herezja?!
  15. Bo chyba po to jest OnItemClick...
×
×
  • Dodaj nową pozycję...