Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Компилятор не видит объявление класса


Автор: Nolane 28.9.2012, 18:51
Код

//Cperson.h
#pragma once
#include "variables.h"
#include "Caudio.h"
#include "Cblock.h"
#include <vector>
enum part{DOWN, UP, LEFT, RIGHT};

class Cperson
{
float x, y;
float s;
std::vector<block>* blocks;
int determination;
int move_state;

block collision(std::vector<block>::itera tor* start, part* p);

public:
Caudio jump;
std::vector<block>::iterator stand;
bool bstand;
float acx, acy;
bool can_jump;

Cperson();
Cperson(float _x, float _y, std::vector<block>* _blocks);
float getx(){return x;}
float gety(){return y;}
int getdetermination(){return determination;}
void nextstate(){if(determination){move_ state %= determination;move_state++;}else move_state = 0;}
void normalize();
std::vector<block>::iterator getbegin(){return blocks->begin();}
std::vector<block>::iterator getend(){return blocks->end();}
void getnewstand();
void draw();
void move();
};


Код

// Cperson.cpp
#include <GL/glut.h>
Cperson* pers;
TextureImage _sun;
TextureImage _pers;
Cperson::Cperson()
{
// действия
}
Cperson::Cperson(float _x, float _y, std::vector<block>* _blocks)
{
// действия
}
void Cperson::draw()
{
// действия
}
void Cperson::move()
{
// действия
}
block Cperson::collision(std::vector<bloc k>::iterator* start, part* p)
{
// действия
}

void Cperson::getnewstand()
{
// действия
}
void Cperson::normalize()
{
// действия
}


Код

//Clevel.h
#pragma once
#include <vector>
#include "Cblock.h"
#include "Cperson.h"
#include "Clevel.h"
class level
{
int lenth;
float prevcamera, camera;
int score;
public:
std::vector<block> blocks;
Cperson p;
float prevy;

level();
void persmove();
void draw();
};


Цитата

1>main.cpp
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C2146: syntax error : missing ';' before identifier 'p'
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\m ain.cpp(189) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
1>person1.cpp
1>Cperson.cpp
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C2146: syntax error : missing ';' before identifier 'p'
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\семья\documents\visual studio 2008\projects\game\tamplate(glut)\c level.h(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>Generating Code...
1>Build log was saved at "file://c:\Users\Семья\Documents\Visual Studio 2008\Projects\game\tamplate(glut)\D ebug\BuildLog.htm"
1>tamplate(glut) - 6 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Не могу понять в чем ошибка.

Автор: feodorv 29.9.2012, 03:55
Цитата(Nolane @  28.9.2012,  19:51 Найти цитируемый пост)
1://Clevel.h
...
6:#include "Clevel.h"
...


Автор: Nolane 29.9.2012, 12:27
Исправил, ошибки те же...

Автор: boostcoder 29.9.2012, 12:33
что исправил?

Автор: Nolane 29.9.2012, 13:36
убрал #include <Clevel.h> в level.h

Автор: feodorv 29.9.2012, 15:02
Цитата(Nolane @  29.9.2012,  13:27 Найти цитируемый пост)
Исправил, ошибки те же...

Была малая, но вероятность...

Всё же несмотря на массу приведённого кода понять причину невозможно. Я вот прибил в хедерах объявления неизвестных классов, всё скомпилировалось без проблем.
Возможно, причина - не в 13 строчке. Закоментируйте её, посмотрите, какие ошибки возникнут. Просмотрите внимательно, какие файлы включают какие файлы, нет ли пересечений. Так, я не понял исходник Cperson.cpp - там один единственный инклюд, напрямую к делу не относящийся. Тем не менее, вроде он включается в person1.cpp, судя по сообщениям компилятора...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)