1. |
Re: Kereszthivatkozas (mind) |
63 sor |
(cikkei) |
2. |
Re: Win 'EXE file header' leirast keresek... (mind) |
25 sor |
(cikkei) |
3. |
Re: Kereszthivatkozas C++-ben? (#231) (mind) |
70 sor |
(cikkei) |
4. |
Re: [w95] alkalm. aktivalas (mind) |
10 sor |
(cikkei) |
5. |
Watcom C+ASM (mind) |
12 sor |
(cikkei) |
6. |
Oszkar (mind) |
11 sor |
(cikkei) |
7. |
re:Kereszthivatkozas C++-ben? (mind) |
47 sor |
(cikkei) |
|
+ - | Re: Kereszthivatkozas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali!
>Van egy osztaly ( class A ), aminek az egyik adattagja (vagy mi a rendes
>neve) egy mutato, ami egy class B-re mutat. A class B egyik adattagja
>pedig egy mutato, ami a class A-ra mutat. Vagyis szeretnem ha mutatna,
>de ahogy en latom igy nem mukodik. Lehetseges-e ez egyaltalan C/C++-ban,
>vagy en csinalok valamit rosszul?
Valoszinuleg az utobbi...
class CTest1;
class CTest2;
class CTest1
{
public:
CTest2 *m_pTest2;
};
class CTest2
{
public:
CTest1 *m_pTest1;
};
void main()
{
CTest1 Test1
CTest2 Test2
Test1.m_pTest2 = &Test2;
Test2.m_pTest1 = &Test1;
}
Egyszeru nem? Csak annyi az egesz, hogy elobb jelezni kell, hogy majd lesz
ilyen class. Nade... Az inyenceknek:
template < class OURTYPE, class OTHERTYPE > class CTest
{
public:
inline void Link ( CTest < OTHERTYPE, OURTYPE > *pOther )
{
m_pOther = pOther;
};
private:
CTest < OTHERTYPE, OURTYPE > *m_pOther;
OURTYPE m_Data;
};
void main()
{
CTest<char, int> TestA;
CTest<int, char> TestB;
TestA.Link ( &TestB );
TestB.Link ( &TestA );
}
Ez igy mar eleg bonyolult nem?
Compi
|
+ - | Re: Win 'EXE file header' leirast keresek... (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 24 Sep 98 at 14:41, wrote:
> > > 'EXE file header' leirast keresek, mely a Windows-os EXE
> > > file-ok fejreszet leirna, hogy mi hol talalhato bennuk...
> >
> > 16 vagy 32 bites formatum kell? (NE vagy PE?) A ketto kozel sem
> > ugyanaz!
>
> Ezt a kerdest nem ugy kellett volna feltenni, hogy New EXE vagy
> MS-DOS exe? :-)Na jo nem kotoszkodom :-)
??? Vagy nem ertem a kotozkodesedet, vagy viccelsz... :-)
Szo sem volt MS-DOS exe-rol (MZ formatum). Ketfele windows exe van:
PE (Portable Executable) meg NE (New Executable). Mint neve is
mutatja, a NE a regebbi :)) Az a regi 16 bites formatum (persze
ujabb, mint az MZ), a PE pedig a 32 bites, ami formatumot (COFF) a
unixrol nyulta le az ms.
Pl. a W95-ben a VER.DLL 16 bites NE file, a VERSION.DLL pedig 32
bites PE file. Mindketto elejen van MZ header is, ez ne zavarjon meg.
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Re: Kereszthivatkozas C++-ben? (#231) (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Szia Peter!
> Van egy osztaly ( class A ), aminek az egyik adattagja (vagy mi a rendes
> neve) egy mutato, ami egy class B-re mutat. A class B egyik adattagja
> pedig egy mutato, ami a class A-ra mutat. Vagyis szeretnem ha mutatna,
> de ahogy en latom igy nem mukodik. Lehetseges-e ez egyaltalan C/C++-ban,
> vagy en csinalok valamit rosszul?
> Azert kerdezem mert pascalban ha jol tudom meg lehet csinalni. Es
> C/C++-ben?
Csak C++ -ban lehet megcsinalni, C-ben nem ;-))
Szoval: gondolom arra celzol, hogy mondjuk eloszor definialom az A
osztalyt, aztan a B osztalyt. Es a compiler nem hajlando az A osztalyban
B-pointert elfogadni, mert meg nem tudja hogy mi az (tehat egy egyszeru
syntax error-nak veli).
Eppen ilyesmire vezettek be az osztalydeklaraciot. Ez egy egyszeru sor,
pl. "class B;". Ennek az az ertelme, hogy a fordito tudja, hogy van egy B
osztaly is, aminek majd kesobb erkezik a definicioja. Igy elfogad
hivatkozasokat B osztalyra, anelkul, hogy tudna, hogy mi is az. Persze ha
teljesen hianyzik a definicio vagy egy hivatkozas nem megfelelo, akkor nem
lesz hajlando linkelni.
Itt egy kis C++ progi:
//***************************************************************
#include "stream.h"
class B; // ez a fontos!!!!! (declaration of class B)
class A { // declaration and definition of class A
private:
B *bmember;
public:
void setBPointer(B *p) { bmember = p; }
B *getBPointer() { return bmember; }
char *getMessage() { return "Instance of A"; }
};
class B { // definition of class B
private:
A *amember;
public:
void setAPointer(A *p) { amember = p; }
A *getAPointer() { return amember; }
char *getMessage() { return "Instance of B"; }
};
void main()
{
A aobj;
B bobj;
aobj.setBPointer(&bobj);
bobj.setAPointer(&aobj);
cout << aobj.getMessage() << endl;
cout << bobj.getMessage() << endl;
cout << aobj.getBPointer() -> getMessage() << endl;
cout << bobj.getAPointer() -> getMessage() << endl;
}
//************************************************************
Ez igy szepen lefordul es muxik.
Remelem segitettem, szia:
Barna
|
+ - | Re: [w95] alkalm. aktivalas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello!
A SetFocus es a SetActiveWindow nem eleg, mert az ablak
Z order poziciojat mas alkalmazasokhoz kepest nem valtoztatja
meg, csak az alkalmazas ablakai kozotti relativ viszonyt modo-
sitja. Helyettuk pl. a SetForegroundWindow(HWND) fuggvenyt
lehet hasznalni.
Szanto Tamas
MOL Rt. IT
|
+ - | Watcom C+ASM (mind) |
VÁLASZ |
Feladó: (cikkei)
|
extern unsigned short far *asm_fuggveny (void);
#pragma aux asm_fuggveny= "mov ax,6300h"\
"int 21h"\
value [ds si]\
modify [ax];
A help-ben le va irva. DOS alol WHELP CGUIDE.
Az in-line assembly direktivaknal keresd.
Ezt a peldat is onnan masoltam ki.
Attila mailto:
|
+ - | Oszkar (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hello, Coderek!
irta:
> Jo hir: megoldas a 10-es vagy a 10.2-es Oszkar-ban talahato :-)
Tudja valaki, mi ez az Oszkar? Probaltam rakeresni is, de semmit
nem talaltam.
Koszonettel
k_tibor
|
+ - | re:Kereszthivatkozas C++-ben? (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali!
>Van egy osztaly ( class A ), aminek az egyik adattagja (vagy mi a rendes
>neve) egy mutato, ami egy class B-re mutat. A class B egyik adattagja
>pedig egy mutato, ami a class A-ra mutat. Vagyis szeretnem ha mutatna,
>de ahogy en latom igy nem mukodik.
Lehet, en minden classnak altalaban adok egy sajat pointert.
class A;
class B;
A* A::p = NULL;
B* B::p = NULL;
class A
{
public:
A() {p = this;}
~A() {p = NULL};
static A* p;
.
.
.
}
class B
{
public:
B() {p = this;}
~B() {p = NULL};
static B* p;
.
.
.
}
Ezek utan az B-bol hivatkozhatsz a A::p-re mint az A osztalyra mutato
pointerre, es az A-bol is a B::p-re, ami a B osztalyra mutato pointer.
Ha az A osztaly tartalmaz pl. egy _int data_ sort es az publikus, akkor
a B osztalybol A:pp->data utasitassal elerheto az adat.
ui:Remelem nincs benne hiba, mert nem probaltam ki.
UBI
mailto:
UIN:974881
|
|