Hollosi Information eXchange /HIX/
HIX CODER 232
Copyright (C) HIX
1998-09-26
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
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

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS