• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Error "does not name a type" gdy używam własnej klasy!

Object Storage Arubacloud
0 głosów
1,328 wizyt
pytanie zadane 26 grudnia 2015 w C i C++ przez Pac Plus Mądrala (5,560 p.)

Hey.

To pytanie z cyklu, gdzie jest błąd :). Nie mogę zrozumieć co zrobiłem nie tak.

Więc klase vector3d przygotowalem już wcześniej, testowałem jej insterface i oczywiście inicializowałem używając jej wszystkich wersji konstruktora.
Wziąłem się teraz do pisania kolizji z użyciem tej klasy. Tu kompilator g++ mówi że vector3d to nie typ przy każdej próbie użycia. A co ja się pytam? Tu przykład:

./pre-compiled/collision_structures.hh:24:2: error: ‘vector3d’ does not name a type
  vector3d Get_point(int x){return plane::p[x]};

Więc nie mogę znaleźć przyczyny. Poniżej podaję źródła plików

collision_structures.hh:

#ifndef _COLLISION_STRUCTURES_HH_
#define _COLLISION_STRUCTURES_HH_
#include "vector3d.hh"

//SPHARE STRUCTURE CLASS:
class sphare{
private:
        float r;
        vector3d center;
public:
        sphare();
        sphare(const vector3d& vec, float rad);
};

//PLANE STRUCTURE CLASS:
class plane{
private:
        vector3d p[4];
        vector3d normal;
public:
        plane(vector3d n, vector3d a, vector3d b, vector3d c, vector3d d);

        vector3d Get_normal(){return plane::normal};
        vector3d Get_point(int x){return plane::p[x]};
};

#endif

vector3d.hh:

/*  -- Part of 3D Shooter Onlin --
   This file provides 3D vector object */

#ifndef _VECTOR3D_HH_
#define _VECTOR3D_HH_
#include <iostream>
#include <cmath>
#include "collision_structures.hh"

class vector3d{
private:
        float x,y,z;
public:
        //vector constructor initialization
        vector3d();
        vector3d(float a, float b);
        vector3d(float a, float b, float c);

        float dotProduct(const vector3d& vec2);
        vector3d crossProduct(const vector3d& vec2);
        float length();
        void normalize();

        //change vectors position
        void change(float a, float b, float c);
        void change(vector3d& vec2);
        void change(vector3d vec2);
        void ChangeX(float a);
        void ChangeY(float a);
        void ChangeZ(float a);

        //overvrite mathematical operators to use them with vectors
        vector3d operator+(const vector3d& vec2);
        vector3d operator-(const vector3d& vec2);
        vector3d operator*(float num);
        vector3d operator/(float num);

        vector3d& operator+=(const vector3d& vec2);
        vector3d& operator-=(const vector3d& vec2);
        vector3d& operator*=(float num);
        vector3d& operator/=(float num);

        bool operator==(const vector3d vec2);
        bool operator!=(const vector3d vec2);

        friend std::ostream& operator<<(std::ostream&
        out, const vector3d& vec);
};

#endif

Dzieki, Daniel.

1 odpowiedź

+1 głos
odpowiedź 26 grudnia 2015 przez adrian17 Ekspert (344,860 p.)
wybrane 26 grudnia 2015 przez Pac Plus
 
Najlepsza
Nie przyglądałem się dokładnie, ale z tego co widzę to Twoje nagłówki include'ują się cyklicznie, co może być problemem.
komentarz 26 grudnia 2015 przez Pac Plus Mądrala (5,560 p.)
Ah, dzięki. Inkudowałem collision_structures.hh do vector3d.hh tylko dla testów bo dla vektora zrobilem prosty test to tak tylko żeby było z czym kompilacje odpalić ^^. Następne błędy to ";" po nawiasach klamrowych zamiast przed w funkcji vector3d Get_normal() i vector3d Get_point().

Tak dla zgodności gdyby ktoś postanowił użyć tych klas :).

Podobne pytania

0 głosów
2 odpowiedzi 699 wizyt
pytanie zadane 29 marca 2016 w C i C++ przez Pablo99 Obywatel (1,110 p.)
0 głosów
1 odpowiedź 499 wizyt
pytanie zadane 19 sierpnia 2021 w C i C++ przez Programmer01 Początkujący (490 p.)
0 głosów
3 odpowiedzi 413 wizyt
pytanie zadane 27 marca 2016 w C i C++ przez niezalogowany

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...