31 października 2008
Kategorie: programowanie | Tagi: C++, code
komentarze: 1
Dziś kilka slow o funkcjach z zmienna liczba argumentów, czyli Variadic Functions ;) W ostatniej notce o makrach z zmienną listą argumentów wspomniałem o najpopularniejszej funkcji przyjmującej nieokreśloną liczbę argumentów – printf. Używanie takich funkcji jest bardzo proste, stworzenie również nie jest jakąś trudną i skomplikowaną sprawą. Niezbędne do tego celu typy i makra umożliwiające [...]
czytaj całość »
28 października 2008
Kategorie: programowanie | Tagi: C++, code, makra
komentarze: 1
Można się zdziwić, ale makra również mogą posiadać zmienną liczbę argumentów, tak jak funkcje. Najbardziej znaną funkcją o zmiennej licznie argumentów jest funkcja printf z standardowej biblioteki języka C: int printf(const char* fmt, …); Makra również posiadają taką możliwość, zwie się to, jak nazwa notki, – Variadic Macros. Proste makro TRACE opakowujące printfa: #define TRACE(fmt, [...]
czytaj całość »
20 października 2008
Kategorie: programowanie | Tagi: C++, code, safe exceptions
komentarze: 0
Ostatnio trochę marudziłem o rzucaniu wyjątków w konstruktorach, to dziś może wspomnę o destruktorach i konstruktorach kopiujących. Każdy chyba wie, że nie należy rzucać wyjątków z destruktorów. To samo dotyczy konstruktora kopiującego obiektu wyjątku. Problem z destruktorami jest to związany z obsługą wyjątku przez kompilator (czas miedzy rzuceniem wyjątku a złapaniem go przez odpowiedni catch), [...]
czytaj całość »
17 października 2008
Kategorie: programowanie | Tagi: C++, code, safe exceptions
komentarze: 0
Wyjątki są najprostszą i najlepszą możliwością zgłoszenia błędów zaistniałych w konstruktorze, przez których tworzenie obiektu zakończyło się porażką. Bez sytuacji wyjątkowych nie ma bezpośredniego prostego mechanizmu zgłoszenia zaistniałej sytuacji, ponieważ konstruktor nie przekazuje żadnego typu i wartości, która mogłaby przekazać informacje o zaistniałym błędzie. Oczywiście można obejść ten problem poprzez zastosowanie dodatkowej zmiennej lokalnej do [...]
czytaj całość »
24 września 2008
Kategorie: programowanie | Tagi: C++, code, debug, eksperymenty
komentarze: 0
Potrzebowałem w prosty sposób i łatwy sposób logować moment tworzenia i niszczenia obiektów. W najprostszym wypadku wystarczyłoby przeciążyć operator new i delete, ale wtedy logowanie dotyczyłoby tylko obiektów tworzonych na stercie. A ja chce i stos, i stertę ;) No to wystarczy w konstruktorze i destruktorze umieścić wywołanie funkcji logującej i problem znika. Tylko, że [...]
czytaj całość »
10 września 2008
Kategorie: programowanie | Tagi: boost, C++, code, predicate, STL
komentarze: 4
Nieraz zdarza się, ze przechowujemy w kontenerach STL-owych niebanalne obiekty, czy typy nieco bardziej rozbudowane od typów wbudowanych. Załóżmy, że mamy prosty vector wypełniony prostymi obiektami o budowie zbliżonej do następującej struktury: struct MyObj{ int foo; int bar; std::string name; }; I chcielibyśmy wyszukać w nim element o nazwie „foo”. Oczywiście najprostszym i najszybszym rozwiązaniem [...]
czytaj całość »
1 września 2008
Kategorie: programowanie | Tagi: C++, code, namespace
komentarze: 2
Nie wszyscy pewnie mają świadomość, że w C++ istnieje możliwość definiowania aliasów dla przestrzeni nazw. Coś jak typedef dla namespace ;) Mechanizm ten pozwala na przypisanie innej nazwy dla istniejącej już przestrzeni nazw. Szczególnie użyteczne przy długich nazwach, gdzie pozwala unikać ciągłego wpisywania tych nazw: namespace my_long_namespace_name { int i; } [...]
czytaj całość »
21 czerwca 2008
Kategorie: programowanie | Tagi: alpha, C++, code, eksperymenty
komentarze: 2
Potrzebowałem uzyskać jak najprostszym sposobem efekt alpha blendingu, a z racji, że nie miałem o tym pojęcia, i nadal zbytnio nie mam o grafice 2/3D próbowałem zaczerpnąć informacji w niezliczonych zasobach sieciowych ;) Szukałem jakiegoś prostego sposobu wyznaczania średniej wartości składowej koloru danego piksela. W różnych źródłach znalazłem kilka różnych działań obliczających tą wartość, od [...]
czytaj całość »
1 maja 2008
Kategorie: programowanie | Tagi: C++, code, GUI, manual, shell
komentarze: 1
Popełniłem sobie małego arta na temat dostępu do konsoli spod aplikacji GUI, opisującego jak najprościej rozróżnić czy aplikacja okienkowa została uruchomiona spod konsoli i jak do niej się dorwać, choćby po to by wyświetlić dostępne opcje linii poleceń naszej aplikacji. Można go znaleźć na docs.malcom.pl – Dostęp do konsoli z aplikacji GUI. Główna inspiracja do [...]
czytaj całość »
14 kwietnia 2008
Kategorie: programowanie | Tagi: array, C++, code, eksperymenty, matrix
komentarze: 1
Potrzebuje jakiejś ciekawej, prostej i optymalnej implementacji tablicy dwuwymiarowej do przechowywania prostych elementów lub wskaźników. Najprostszym rozwiązaniem byłoby wykorzystanie kontenerów z STL: std::vector<std::vector<Element*> > array Szybko i prosto, tylko używać. Ale pojawia się problem, bo chciałbym, aby pojedyncza linia zachowywała się jak czysta tablicą w stylu C (wymagania API). Także można by bez problemu zastosować [...]
czytaj całość »