Thread View: de.comp.lang.c++
2 messages
2 total messages
Started by Wolfgang Thomas
Tue, 05 Mar 1996 18:34
Private Datenstrukturen
Author: Wolfgang Thomas
Date: Tue, 05 Mar 1996 18:34
Date: Tue, 05 Mar 1996 18:34
75 lines
2366 bytes
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
Author: Harald Wellmann
Date: Wed, 06 Mar 1996 08:15
Date: Wed, 06 Mar 1996 08:15
63 lines
2046 bytes
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