Anonymní profil PazziCZ – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil PazziCZ – Programujte.comAnonymní profil PazziCZ – Programujte.com

 

Příspěvky odeslané z IP adresy 158.196.57.–

PazziCZ
C / C++ › Jak provázat soubory, když c…
1. 5. 2012   #157233

To fenry:

To jsem samozřejmě udělal, ale VS mi hlásilo stále stejnou chybu. 

Top ingiraxo:

Jasně, bordel v tom mám. Právě proto se to teď snažím předělat, aby to vypadalo hezčeji. Programuju teprve rok, takže se ještě učím jak přehledně pracovat na nějakém větším projektu. 

Funkce ToPoint tam ještě zůstala z doby, kdy Point byla struktura, teď už to řeším přes konstruktor, ale zapomněl jsem ji smazat. 

Ty funkce v main.h tam mám, protože jsem nevěděl kam je strčit jinam. Prototypy funkcí využívajicí Ball (i ty s vektorama) mám tedy strčit do ball.h a definovat je v ball.cpp (nemám je strkat do třídy Ball). 

Díky moc, už mi to funguje.

PazziCZ
C / C++ › Jak provázat soubory, když c…
1. 5. 2012   #157224

Zdravím, 

ve zkratce: mám 2 třídy (Point a Ball), každá z nich má *.h a *.cpp soubor a v třídě Ball mám jako private objekt třídy Point. A zde nevím jak mezi sebou provázat hlavičkové soubory... Visual Studio mi hlásí chybu, že třída Point v ball.h není nadefinovaná... 

Za každou radu budu nesmírně vděčný, předem díky za odpovědi.

Takhle nějak vypadají jednotlivé soubory: 

pro lepší přehlednost v Pastebin: 

main.h http://pastebin.com/KSSqBeUB 

main.cpp http://pastebin.com/GdcKS2ZV 

point.h http://pastebin.com/hHaQLeqA 

point.cpp http://pastebin.com/dt5WfNJD

ball.h http://pastebin.com/7WLmDmeB

ball.cpp http://pastebin.com/FWJzma6J

main.h 

#pragma once

#include <allegro5\allegro.h>
#include <allegro5\allegro_primitives.h>
#include <allegro5\allegro_image.h>
#include <allegro5\allegro_font.h>
#include <allegro5\allegro_ttf.h>
#include <allegro5\color.h>

#include <stdio.h>
#include <fstream>
#include <vector>
#include <iostream>
#include <sstream>
#include <string>
#include <math.h>

#include "point.h"
#include "ball.h"

using namespace std;

/*
 ... nejake dalsi promenne ...
*/


class Point;
class Ball;

void InitBalls(vector<Ball> &b);
void CheckAndMove(Ball &player, vector<Ball> &balls);
void CollideObjects(Ball &player, vector<Ball> &balls);
void EatAFromB(Ball &a, Ball &); 
void EatBiggerFromSmaller(Ball &a, Ball &b);
int PointDistance(Point u, Point v);
Point ToPoint(double a, double b);
double RoundInterval(double x);

point.h

#pragma once
#include "main.h"

class Point
{
private:
    double x;
    double y;
public:
    Point();
    Point(double x, double y);

    double GetX();
    double GetY();
    void SetX(double a);
    void SetY(double a);
    double Length();
    Point SetPlus(Point a);
    Point SetMinus(Point a);
    Point SetDevide(double a);
    Point SetMultiply(double a);
    Point GetPlus(Point a);
    Point GetMinus(Point a);
    Point GetDevide(double a);
    Point GetMultiply(double a);
};

ball.h     // zde mi to hlásí "Ball::position, Ball::speed uses undefined class 'Point'"

#pragma once
#include "main.h"

class Point;

class Ball
{
private:
    int ID;
    double r;
    Point position;
    Point speed;
public:
    Ball();
    Ball(int i, Point p, Point s, int r);
    void Draw();
    void DrawInfo(int x, int y);
    void Reset();
    void Check();
    void Move();
    void Kill();

    void AddContent(double x);
    void AttributedSpeed(Point s);
    void SetSpeed(Point s);
    double SetR(double x);
    double ReduceR(double x);
    double GetR();
    Point GetSpeed();
    Point GetPosition();
    Point CalcDirection(int x, int y);
    Ball Fart(int x, int y);
    bool ISCollide(Ball b);
    bool Alive();
};

main.cpp

#include "main.h"

/*
... main a dalsi funkce z main.h
*/

point.cpp

#include "point.h"

/*
... metody z point.h ...
*/

ball.cpp

#include "ball.h"

/*
... metody z ball.h ...
*/

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý