Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.11.2010, 10:43

Fehler bei der Klassendefiniton

Hallo,
ich bin gerade dabei die Klasse tbMatrix zu erstellen. Jedoch denkt der Compiler, dass meine Klasse eine Funktion sei, da das Marko TRIBASE_API vor dem Klassennamen steht. Hier der Code der Klasse:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class TRIBASE_API tbMatrix
{
public:
 union
 {
  struct 
  {
float m11, m12, m13, m14,
   m21, m22, m23, m24,
m31, m32, m33, m34,
   m41, m42, m43, m44; 
  };
  float m[4][4];
 };
  
 tbMatrix(float c11, float c12, float c13, float c14,
         float c21, float c22, float c23, float c24,
         float c31, float c32, float c33, float c34,
         float c41, float c42, float c43, float c44) : m11(c11), m12(c12), m13(c13), m14(c14),
                                                                    m21(c21), m22(c22), m23(c23), m24(c24),
                                                                    m31(c31), m32(c32), m33(c33), m34(c34),
                                                                    m41(c41), m42(c42), m43(c43), m44(c44)
 {
 }
};


TRIBASE_API ist in der Datei Tribase.h (natürlich auf globaler Ebene) definiert worden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#pragma once
#ifdef TRIBASE_EXPORTS
#define TRIBASE_API _declspec (dllexport)
#else
#define TRIBASE_API _declspec (dllimport)
#endif
 
#include <tbMatrix.h>
#include <tbVector3.h>


Das sagt der Compiler:

C-/C++-Quelltext

1
Fehler  1   error C2470: "tbMatrix": Sieht wie eine Funktionsdefinition aus, es ist aber keine Parameterliste vorhanden; sichtbarer Funktionstext wird übersprungen.   c:\tribase\include\tbmatrix.h   14


Was mache ich falsch?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »GreenPepper« (28.11.2010, 10:53)


idontknow

unregistriert

2

28.11.2010, 11:32

Erstellst du ein Objekt von der Klasse tbMatrix? Wo/Wie?

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

3

28.11.2010, 11:41

__declspec wird mit zwei Unterstrichen geschrieben.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

4

28.11.2010, 12:05

__declspec wird mit zwei Unterstrichen geschrieben.

/sign

5

28.11.2010, 12:35

__declspec wird mit zwei Unterstrichen geschrieben.

Meinem Compiler ist das so ziemlich egal...(Visual C++)


Zitat

Erstellst du ein Objekt von der Klasse tbMatrix? Wo/Wie?


Momentan brauche ich kein Objekt innerhalb der DLL, sondern nur außerhalb

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

28.11.2010, 12:41

Bist du dir sicher, dass TRIBASE_API nicht vor dem Schlüsselwort "class" stehen muss?

7

28.11.2010, 12:48

Nö, da bin ich mir zu 99% sicher. Das merkwürdige an der Sache ist, dass es bei dieser Klasse keine Probleme gibt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class TRIBASE_API tbVector3
{
public:
float x, y, z;
 
//standardkonstruktor
tbVector3() { }
//Konstruktor: Kopiert den übergeben Vector
tbVector3(const tbVector3& v) : x(v.x), y(v.y), z(v.z) { }
//Konstruktor: setzt übergebene Werte in MemberVariablen
tbVector3(const float vx,
  const float vy,
  const float vz) : x(vx), y(vy), z(vz) { }
tbVector3(const D3DVECTOR& v) : x(v.x), y(v.y), z(v.z) { }
 
 
//-----------------------------------------------------------------//
// Zuweisungsoperatoren und andere Operatoren
//-----------------------------------------------------------------//
 
tbVector3& operator = (const tbVector3& v)
{
x = v.x;
y = v.y;
z = v.z;
return *this;
}
 
tbVector3& operator += (const tbVector3& v)
{
x += v.x;
y += v.y;
z += v.z;
return *this;
}
 
operator D3DVECTOR& ()
{
return *(D3DVECTOR*)this;
}
};

8

28.11.2010, 13:00

Bindest du auch die "TriBase.h" in der Header Datei der Matrix Klasse ein? Wenn nicht mach das mal, dann sollte der Fehler weggehen.
Mfg Male

9

28.11.2010, 13:20

Das habe ich schon gemacht...
Ich lade mal das Projekt hoch.
»GreenPepper« hat folgende Datei angehängt:
  • TriBase.zip (146,84 kB - 73 mal heruntergeladen - zuletzt: 30.04.2024, 16:04)

10

28.11.2010, 13:44

Meckert auch bei euch der Compiler?

Werbeanzeige