Pole vlastni tridy – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pole vlastni tridy – C / C++ – Fórum – Programujte.comPole vlastni tridy – C / C++ – Fórum – Programujte.com

 

Martin Grac0
Newbie
17. 11. 2006   #1
-
0
-

udelal sem si vlastni tridu WbdPanel a chtel bych vytvorit pole kde budou ulozeny instance teto tridy. zkousel sem

WbdPanel * Panels;

Panels = new WbdPanel[10];
WbdPanel * tmpPanel = new Panel( this, Bitmap );
Panels[1] = tmpPanel //tak tady mi to hazi chybu


pls o radu, mozna to cely delam spatne, jen potrebuju naky pole (nejlip dynamicky) kam budu ukladat ty instance tridy

predem diky

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
eMan0
Stálý člen
17. 11. 2006   #2
-
0
-
Nahlásit jako SPAM
IP: ...–
Pedro0
Stálý člen
18. 11. 2006   #3
-
0
-

Ma ta trieda aj konstruktor bez argumentov ?

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Pedro0
Stálý člen
18. 11. 2006   #4
-
0
-

chybu ti to hadze pretoze si vytvoril pole WbdPanel-ov a snazis na do jeho prvku pridat ukazatel na WbdPanel

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Martin Grac0
Newbie
19. 11. 2006   #5
-
0
-

a jak to mam pls udelat?

at uz s vektorem, nebo polem...

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Martin Grac0
Newbie
19. 11. 2006   #6
-
0
-

kdyz to zkousim pres ten vektor, tak mi to napise tohle:

1>d:\programovani\wbd3\wbd3\WbdFrame.h(79) : error C2248: 'wxPanel::wxPanel' : cannot access private member declared in class 'wxPanel' //a kdyz clicknu sem, tak me to hodi na **1**
1> c:\wxWidgets-2.6.3\include\wx/generic/panelg.h(93) : see declaration of 'wxPanel::wxPanel'
1> c:\wxWidgets-2.6.3\include\wx/generic/panelg.h(34) : see declaration of 'wxPanel'
1> This diagnostic occurred in the compiler generated function 'WbdPanel::WbdPanel(const WbdPanel &)'

class WbdPanel: public wxPanel

{
public:
WbdPanel();
WbdPanel( wxWindow * parent , wxBitmap bmp );
~WbdPanel();
WbdMemDC memory;
}; // **1**

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Jura_
~ Anonymní uživatel
236 příspěvků
20. 11. 2006   #7
-
0
-

To MadMaxx:
Mozna by bylo lepsi, kdyby jsi sem postnul i definici tridy(samozreme pokud to neni prisne tajne) a taky priklad s vektorem. Jinak te kompilator upozornuje na to, ze trida wxPanel ma privatni konstruktor.

Nahlásit jako SPAM
IP: ...–
Martin Grac0
Newbie
20. 11. 2006   #8
-
0
-

class WXDLLEXPORT wxPanel : public wxWindow

{
public:
wxPanel() { Init(); }

// Old-style constructor (no default values for coordinates to avoid
// ambiguity with the new one)
wxPanel(wxWindow *parent,
int x, int y, int width, int height,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr)
{
Init();

Create(parent, wxID_ANY, wxPoint(x, y), wxSize(width, height), style, name);
}

// Constructor
wxPanel(wxWindow *parent,
wxWindowID winid = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr)
{
Init();

Create(parent, winid, pos, size, style, name);
}

// Pseudo ctor
bool Create(wxWindow *parent, wxWindowID winid,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr);

virtual ~wxPanel();

// implementation from now on
// --------------------------

// calls layout for layout constraints and sizers
void OnSize(wxSizeEvent& event);

virtual void InitDialog();

#ifdef __WXUNIVERSAL__
virtual bool IsCanvasWindow() const { return true; }
#endif


WX_DECLARE_CONTROL_CONTAINER();

protected:
// common part of all ctors
void Init();

private:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanel)
DECLARE_EVENT_TABLE()
};



tak tohle je wxPanel, je to z knihovny wxWidgets

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Jura_
~ Anonymní uživatel
236 příspěvků
20. 11. 2006   #9
-
0
-

Pardon, ja myslel definici tridy WbdPanel. Krom toho jak vidim, je tohle sice jen deklarace, ale presto jsem se zmylil v tom, ze ten konstruktor je privatni(jak vidno je public).

Nahlásit jako SPAM
IP: ...–
Martin Grac0
Newbie
20. 11. 2006   #10
-
0
-

tu definici WbdPanel mas hore,

class WbdPanel: public wxPanel

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Pedro0
Stálý člen
20. 11. 2006   #11
-
0
-

To MadMaxx:
staci ten pinter dereferencovat a si za vodou ;) (help: operator *)

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Martin Grac0
Newbie
20. 11. 2006   #12
-
0
-

dereferencovat? pls napis sem nakej priklad, thx

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Pedro0
Stálý člen
20. 11. 2006   #13
-
0
-

To MadMaxx:



int x = 5;
cout << x << endl;
int* px = &x;
cout << px << endl
<< *px << endl; // ta * je operator dereferencie, tj z pointeru dostanes hodnotu a nie iba adresu :)

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Martin Grac0
Newbie
20. 11. 2006   #14
-
0
-

Pokud dobre chapu, tak tohle by melo bejt dobre?

WbdPanel * Panels;

Panels = new WbdPanel[10];
WbdPanel * tmpPanel = new Panel( this, Bitmap );
Panels[1] = * tmpPanel;

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Martin Grac0
Newbie
20. 11. 2006   #15
-
0
-

hm, tak nefacha, pise to:

d:\programovani\wbd3\wbd3\wbdframe.cpp(158) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'WbdPanel *' (or there is no acceptable conversion)
1> d:\programovani\wbd3\wbd3\wbdframe.h(79): could be 'WbdPanel &WbdPanel::operator =(const WbdPanel &)'
1> while trying to match the argument list '(WbdPanel, WbdPanel *)'

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Jura_0
Stálý člen
20. 11. 2006   #16
-
0
-

To MadMaxx: Nemas spravne pretizen operator prirazeni. Jinak to co jsi psal, ze je definice, tak je ve skutecnosti jen deklarace.
Definenice obyvkle, pokud teda nedelas inline fce, vypada asi nejak takto:



void a::setA(int a)
{ m_a = a;
}

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
20. 11. 2006   #17
-
0
-

Jen na doplneni, az si spravne pretiyis operator prirayeni a napises kopirovaci konstruktor(ma-li tam byt), tak pak staci pouzit vector.



#include <vector>
//...
std::vector<WbdPanels*> v;
v.push_back(new WbdPanel(this, Bitmap));

// a dealokace
for(vector<WbdPanels*>::iterator i=v.begin(); i!=v.end(); ++i) delete *i;

Nahlásit jako SPAM
IP: ...–
Martin Grac0
Newbie
20. 11. 2006   #18
-
0
-

mno praveze bude asi problem s tim kopirovacim konstruktorem.... nak nevim co do nej napsat.....

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Jura_0
Stálý člen
20. 11. 2006   #19
-
0
-

To MadMaxx: Ja teda s wxWindows nepracuju, ale jak se tak koukam, tak s tim operatorem prirazeni a kopirovacim konstruktorem to nebude tak jednoduche. Totiz nevim, co znamena makro DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanel), ale podle nazvu usuzuju, ze ta trida wxPanel neni urcena pro jakekoliv kopirovani(ma tedy privatni jak cpy-constr, tak operator= ).

Nahlásit jako SPAM
IP: ...–
Martin Grac0
Newbie
21. 11. 2006   #20
-
0
-

a kdybych chtel nekde jen ulozit ukazatele na WbdPanel?

Nahlásit jako SPAM
IP: ...–
"halaka pinde malke zizana hata ojebus duty dynya". Překlad: "Nikdy nevěř světlu v očích ženy, je to jen slunce, které prosvítá přes její dutou hlavu".
Jura_0
Stálý člen
21. 11. 2006   #21
-
0
-

To MadMaxx: V tom pripade staci pouzit jiz vyse zmineny kod(s tim vektorem) a melo by to fungovat. Jinak ovsem obecne by cokokliv, co cpes do containeru melo mit definovan kopy construcor a opertator prirazeni(kvuli kopirovani).

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Data ze třídy do pole — založil oxidián

Dealokace pole třídy — založil l1zard

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý