ďťż

Ładny brzuch

Każdy kto "męczył" kedyś klasy i wzorce w C++ bawił się zapewnie kodem w takim stylu:
#include <stdio.h> #include <iostream> using namespace std; const int DefaultSize=5; class X {    public:    X():itsParam(0) {}    X(int param):itsParam(param) {}    ~X() {}    int GetParam() const { return itsParam; }    void SetParam(int param) { itsParam=param; }    private:    int itsParam; }; template<class T> class Array {    public:    Array(int size=DefaultSize);    Array(const Array &rhs);    ~Array() { delete[] pType; }    Array& operator=(const Array&);    T& operator[](int offset) { return pType[offset]; }    const T& operator[](int offset) const { return pType[offset]; }    int GetSize() const { return itsSize; }    friend ostream& operator<<(ostream&, Array<T>&);    private:    T* pType;    int itsSize; }; template<class T> Array<T>::Array(int size):itsSize(size) {    pType=new T[itsSize];    for(int j=0; j<itsSize; pType[j++]=0); } template<class T> Array<T>::Array(const Array& rhs) {    itsSize=rhs.GetSize();    pType=new T[itsSize];    for(int j=0; j<itsSize; j++)        pType[j]=rhs[j]; } template<class T> Array<T>& Array<T>::operator=(const Array& rhs) {    if(this==&rhs)      // bo w tym przypadku przypisanie        return *this;    // do samego siebie miałoby opłakane skutki;)    delete[] pType;    itsSize=rhs.GetSize();    pType=new T[itsSize];    for(int j=0; j<itsSize; j++)        pType[j]=rhs[j];    return *this; } template<class T> ostream& operator<<(ostream& stream, Array<T>& array) {    for(int j=0; j<array.GetSize(); j++)        stream<<"["<<j<<"]"<<array[j]< <endl;    return stream; } int main() {    // sprawdzmy czy na pewno X dziala...    X something(4);    cout<<something.GetParam()<<endl;    // sprawdzamy czy Array dziala...    X* pX=0;    Array<X> somethingBig;    for(int j=0; j<somethingBig.GetSize(); j++)    {        pX=new X;        pX->SetParam(j);        somethingBig[j]=*pX;        delete pX;    }    cout<<somethingBig;    system("pause");    return 0; }
Niestey mój BCB 5 nie chce zbudować tego programiku - jakiś błąd linkera. Hmmm... Błąd linkera (kompilator milczał)? Może jakaś mała niezgodność ze standardem ANSI C++. Przecież to dosyć stara wersja... Z nowszego stuffu miałem tylko linuxowego gcc/g++, więc nie czekałem ani chwili i... znowu błąd :/ Wniosek: gdzieś się pomyliłem. Ale gdzie???? IMHO wszystko jest OK...




... jakiś błąd linkera ...
Na podstwaie czegos takiego to ja moge ci powiedziec, ze masz jakis blad <_<


Na podstwaie czegos takiego to ja moge ci powiedziec, ze masz jakis blad  <_<





Istotnie książka "C++ dla każdego" utwierdzała mnie w przekonaniu, że wszystko jest ok. Niestety nie było. To duży minus dla tej pozycji

No nie wiem. Przeczytałem książkę i wiem, że autor najbardziej stawia na zgodność ze standardem ANSI.

Offtopic mały...
Widzę w waszym języku błędne tłumaczenia prosto od kochanego wydawnictwa NT. Błagam, trzymajmy się poprawnego słownictwa:

template - szablon
pattern - wzór, wzorzec

Więc klasy nie są wzorcowe, a szablonowe. A design patterns to nie są szablony, a wzorce projektowe. WNT ma jakichś dziwnych tłumaczy...

Pozdrawiam,
TeMPOraL.

tak, ale w jezyku polskim bardzo czesto uzywa sie slow "szablon" i "wzorzec" zamiennie :)


tak, ale w jezyku polskim bardzo czesto uzywa sie slow "szablon" i "wzorzec" zamiennie :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •