Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dołączanie plików nagłówkowych

Ostatnio zmodyfikowano 2014-10-26 12:34
Autor Wiadomość
akcza
Temat założony przez niniejszego użytkownika
Dołączanie plików nagłówkowych
» 2014-10-25 21:31:34
Witam, mam problem z kodem, przypuszczam, że jest coś nie tak z dołączeniem plików nagłówkowych.
Treść błędów:
[Error 1 error C2146: syntax error : missing ';' before identifier 'srodek' c:\users\hp\documents\visual studio 2013\projects[zmpo] lista2 zad1 okrag[zmpo] lista2 zad1 okrag\okrag.h 8 1 [ZMPO] Lista2 zad1 okrag
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\hp\documents\visual studio 2013\projects[zmpo] lista2 zad1 okrag[zmpo] lista2 zad1 okrag\okrag.h 8 1 [ZMPO] Lista2 zad1 okrag
Error 3 error C2146: syntax error : missing ';' before identifier 'srodek' c:\users\hp\documents\visual studio 2013\projects[zmpo] lista2 zad1 okrag[zmpo] lista2 zad1 okrag\okrag.h 8 1 [ZMPO] Lista2 zad1 okrag
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\hp\documents\visual studio 2013\projects[zmpo] lista2 zad1 okrag[zmpo] lista2 zad1 okrag\okrag.h 8 1 [ZMPO] Lista2 zad1 okrag

Punkt.cpp
C/C++
#include "Punkt.h"
#include "Okrag.h"

Punkt::Punkt( double x, double y )
{
    this->x = x;
    this->y = y;
}

Punkt.h
C/C++
#ifndef punkt_h
#define punkt_h
#include "Okrag.h"


class Punkt
{
private:
    //wspolrzedne
    double x;
    double y;
   
public:
    Punkt() { };
    Punkt( double x, double y );
   
private:
    //float odleglosc(Okrag &okrag){};
   
};

#endif

Okrag.cpp
C/C++
#include "Okrag.h"
#include "Punkt.h"

Okrag::Okrag( double x, double y, double promien )
{
    this->srodek = Punkt( x, y );
    this->promien = promien;
}

Okrag::Okrag( double promien )
{
    //this->srodek = srodek;
    this->promien = promien;
}

Okrag.h
C/C++
#ifndef okrag_h
#define okrag_h
#include "Punkt.h"

class Okrag
{
private:
    Punkt srodek;
    double promien;
   
public:
    Okrag( double x = 0, double y = 0, double promien = 0 );
    Okrag( double promien );
};

#endif

main.cpp
C/C++
#include "Punkt.h"
#include "Okrag.h"
#include <stdio.h>


int main( char * args[] )
{
    Okrag okrag( 8.5, 5.0, 7.0 );
    Punkt punkt( 2.2, 7 );
   
    getchar();
    return 0;
}
P-119403
pekfos
» 2014-10-26 09:43:13
C/C++
#ifndef punkt_h
#define punkt_h
#include "Okrag.h"
Nie możesz tu dołączyć Okrag.h.
P-119418
Jacob99
» 2014-10-26 11:25:28
Tak jak wyżej napisał pekfos. Nie możesz dołączyć "Okrag.h" do "Punkt.h", bo jest to podstawowy błąd przy obiektowości. Zapętlasz kod, dlatego nie będzie on działał. Bo w klasie punkt chcesz korzystać z klasy okrag, a w klasie okrag z klasy punkt.
P-119420
akcza
Temat założony przez niniejszego użytkownika
» 2014-10-26 11:40:23
To jak to rozwiązać skoro w Okrag.h potrzebuje Punkt.h, a w Punkt.h potrzebuje Okrag.h? Myślałem, że jeśli dodam #ifndef i #define to to zapobiegnie błędom.
P-119421
Jacob99
» 2014-10-26 11:42:17
A po co ci w klasie punkt obiekt okrąg?
P-119422
akcza
Temat założony przez niniejszego użytkownika
» 2014-10-26 11:44:18
Mam tam zakomentowaną funkcję
float odleglosc( Okrag & okrag ) { };
która ma liczyć odległość danego punktu od okręgu.
P-119423
Monika90
» 2014-10-26 11:46:19
usuń #include "okrag.h" z pliku "punkt.h", dodaj w nim (w pliku "punkt.h") deklarację
C/C++
class Okrag;
a definicję funkcji odleglosc przenieś do pliku "punkt.cpp"
P-119424
akcza
Temat założony przez niniejszego użytkownika
» 2014-10-26 11:51:36
A dlaczego wtedy to działa, a jak w Okrag.h dodam zamiast
#include "Punkt.h"
 
class Punkt;
 to rzuca błędem?
P-119426
« 1 » 2
  Strona 1 z 2 Następna strona