Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Pekare till nästlad medlem

Postades av 2005-10-17 12:06:05 - Martin Adrian, i forum c++, Tråden har 3 Kommentarer och lästs av 905 personer

Går det att skapa en pekare till en medlem i en nästlad struktur?

<code=c++>
struct yttre {
struct inre {
int medlem;
} x, y;
};
</code>

Jag vill nu ha en pekare till yttre::x.medlem.

Nåt i stil med
<code=c++>
int yttre::inre::* p = &yttre::x.medlem;

yttre y;
y.*p = 2;
</code>


Svara

Sv: Pekare till nästlad medlem

Postades av 2005-10-17 20:00:29 - Peter Larsson

Lite svårt att förstå vad du är ute efter. Man kan inte skapa en generell pekare till en medlem i strukturen. Däremot kan du:

1. Skapa en pekare till medlemmen i en specifik struktur.
<code=c++>
yttre y;
int* p = &y.x.medlem;
</code>

2. Lägga till en konsturerare och en pekare i stukturen så varje instans har en pekare till den inre medlemmen, varför man nu skulle vilja göra så.
<code=c++>
struct yttre {
yttre() { p = &x.medlem; }

struct inre {
int medlem;
} x, y;

int *p;
};

// Sedan är det bara att
yttre y;
*y.p = 2;
</code>

/Peter


Svara

Sv:Pekare till nästlad medlem

Postades av 2005-10-18 00:51:44 - Per Persson

<b>Man kan inte skapa en generell pekare till en medlem i strukturen.</b>

Jodå, man kan skapa en generell pekare till en medlem i en struktur. I princip är det den relativa adressen för medlemmen gentemot strukturens början.

Följande kod skapar en pekare till medlemmen y i strukturen yttre:

yttre::inre yttre::*p = & yttre::y;

yttre::inre anger att p pekar på typen (strukturen) inre som ligger i yttre.
yttre::* anger att pekaren gäller relativt yttre.
Pekaren används så här:
yttre z;
(z.*p).medlem = 123;

Här är z.*p detsamma som z.y eftersom p pekar på y.

Vad Martin vill göra är att på motsvarande sätt skapa en pekare q till x.medlem relativt yttre, så att man z.*q blir detsamma som z.x.medlem.

Jag har försökt, men lyckades inte få till det.


Svara

Sv: Pekare till nästlad medlem

Postades av 2005-10-18 08:20:01 - Martin Adrian

Anledningen till att jag vill göra det är att jag har generella predikat som "equal_member" vilka tar en medlemspekare som argument. Använder predikaten med algoritmer

<code=c++>
if (std::find_if(vec.begin(), vec.end(), equal_member(&yttre::member, 2)) != vec.end()) {
...
}

std::sort(vec.begin(), vec.end(), less_member(&yttre::member));

sum = accumulate(vec.begin(), vec.end(), sum_member(&yttre::member));
</code>

Vore bra om man kunde använda predikaten även på nästlade strukturer men det verkar inte gå.
(Skulle kanske fungera med bind/lambda men eftersom jag använder VC70 så fungerar inte dessa särskilt bra)


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 617
27 953
271 709
5 805
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies