🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
2 messages
2 total messages Started by Wolfgang Thomas Tue, 05 Mar 1996 18:34
Private Datenstrukturen
#1765
Author: Wolfgang Thomas
Date: Tue, 05 Mar 1996 18:34
75 lines
2366 bytes
Hallo,

ich bin bei meinem Einstieg in die C++ auf ein paar Probleme gestossen,
die mir ziemlich unklar sind. Vielleicht kann mir ja der oder die Eine
weiterhelfen:

1.) Wenn Klassen zur internen Verarbeitung Strukturen benutzen, dann
    sollten diese ja den anderen Klassen nicht bekannt gemacht werden.
    Also habe ich diese Definitionen in den Private-Teil der Klassen-
    deklaration gesteckt:

    class test
    {
    private:

       struct A
       {
          int a;
          int b;
       };

       struct B
       {
          struct A a;
          int      c;
       };
       ...
    };

    Dies fuehrt jedoch zu der Fehlermeldung: "access to private member
    test::A is not allowed".
    Warum ist das verschachtelte Definieren von Datenstrukture nicht
    erlaubt?


2.) Beim probieren mit Template-Klassen bin ich auf folgende Fehlermeldung
    gestossen:

    template <class A>
    class test
    {
    public:
       int test (void);
    };

    template <class A>
    int test::test (void)
    {
       return 1;
    }

    Der Compiler liefert mir "template argument "A" is not used in
    function argument list".
    Ich habe nirgendwo eine Restriktion gefunden, die verlangt, dass
    jede member-function einer template-class alle template argumente
    benutzen MUSS. Habe ich dies uebersehen, oder ist dies wohl "nur"
    eine Einschraenkung des Compilers?

3.) Dann habe ich noch ein Problem beim Exportieren von Klassen
    bzw. Memberfunktions in DLLs. Hierbei muss ich dem Linker explizit
    die Namen der Funktionen angeben, die exportiert werden sollen. Fuer
    "normale" Funtionen ist das kein Problem, man muss an den Namen
    lediglich einen underscore dranhaengen, aber wie ist es mit member-
    functions? Ist das irgendwo festgelegt, oder compilerabhaengig?
    (Weisst jemand wie das beim Watcom 10.0A definiert ist?)

Danke im voraus.

Tschuess
Wolfgang



_________________________________________________________
Wolfgang Thomas                         D-90419 Nuernberg
Re: Private Datenstrukturen
#1771
Author: Harald Wellmann
Date: Wed, 06 Mar 1996 08:15
63 lines
2046 bytes
In article <64JgNVyTpZB@nana.franken.de> wolfgang@nana.franken.de (Wolfgang Thomas) writes:

   1.) Wenn Klassen zur internen Verarbeitung Strukturen benutzen, dann
       sollten diese ja den anderen Klassen nicht bekannt gemacht werden.
       Also habe ich diese Definitionen in den Private-Teil der Klassen-
       deklaration gesteckt:

       class test
       {
       private:

	  struct A
	  {
	     int a;
	     int b;
	  };

	  struct B
	  {
	     struct A a;
	     int      c;
	  };
	  ...
       };

       Dies fuehrt jedoch zu der Fehlermeldung: "access to private member
       test::A is not allowed".
       Warum ist das verschachtelte Definieren von Datenstrukture nicht
       erlaubt?

Funktioniert bei mir mit g++ oder CC auf HP-PA einwandfrei.


   2.) Beim probieren mit Template-Klassen bin ich auf folgende Fehlermeldung
       gestossen:

       template <class A>
       class test
       {
       public:
	  int test (void);
       };

       template <class A>
       int test::test (void)
       {
	  return 1;
       }

Die template Parameter müssen vor dem :: nochmal auftauchen, also z.B.


       template <class A>
       int test<A>::method ()
       {
	  return 1;
       }

Außerdem: Wenn deine Klasse "test" heißt, dann ist eine Methode namens "test"
ein Konstruktor und hat somit keinen Return-Typ.

Für eine leere Parameterliste schreibt man in C++ einfach () statt (void) in
ANSI C.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads