Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2013, 18:10   #11
Alex46
Пользователь
 
Регистрация: 19.07.2013
Сообщений: 11
По умолчанию

вот все ошибки

1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C2143: syntax error : missing ';' before '&'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(61): error C2061: syntax error : identifier 'PhysXScene'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C2143: syntax error : missing ';' before '&'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): warning C4183: 'getScene': missing return type; assumed to be a member function returning 'int'
1> Scene.cpp
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C2143: syntax error : missing ';' before '&'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(61): error C2061: syntax error : identifier 'PhysXScene'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C2143: syntax error : missing ';' before '&'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\physxrigidbody.h(142): warning C4183: 'getScene': missing return type; assumed to be a member function returning 'int'
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\scene.cpp(20): error C2661: 'PhysXRigidBody::PhysXRigidBody' : no overloaded function takes 2 arguments
1>c:\users\алексей\documents\visua l studio 2010\projects\gameengine\physxwrapp er\scene.cpp(33): error C2661: 'PhysXRigidBody::PhysXRigidBody' : no overloaded function takes 2 arguments

все остальные вытекаю из самой первой.

Вот где последние 2 ошибки:

Код:
PhysXRigidBody& PhysXScene::createStaticRigidBody(Ogre::String& name, Ogre::SceneNode* node)
{
	assert(node);
	PhysXRigidBody body(node, *this); //создание тела (здесь ошибка)
	
	//добавление тела в сцену
	
	body.construct();
	bodyTree.insert(std::make_pair(name, body));
	
	return bodyTree.find(name)->second;
}

PhysXRigidBody& PhysXScene::createDynamicRigidBody(Ogre::String& name, Ogre::SceneNode* node, float density)
{
	assert(node);
	PhysXRigidBody body(node, *this); //создание тела (здесь ошибка)
	
	//устанавливаем динамическое твёрдое тело
	
	body.setDynamicRigidBody();
	body.setDensity(density);

	//добавление тела в сцену
	
	body.construct();
	bodyTree.insert(std::make_pair(name, body));
	
	return bodyTree.find(name)->second;
}
Alex46 вне форума Ответить с цитированием
Старый 20.07.2013, 18:34   #12
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
PhysXScene &scene; //здесь ошибка
Ссылка должна на что-то ссылаться.
Igor95 вне форума Ответить с цитированием
Старый 21.07.2013, 00:13   #13
Alex46
Пользователь
 
Регистрация: 19.07.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Igor95 Посмотреть сообщение
Код:
PhysXScene &scene; //здесь ошибка
Ссылка должна на что-то ссылаться.
Код:
PhysXRigidBody body(node, *this);
Ссылается.
Alex46 вне форума Ответить с цитированием
Старый 21.07.2013, 00:18   #14
Alex46
Пользователь
 
Регистрация: 19.07.2013
Сообщений: 11
По умолчанию

Вот конструктор

Код:
PhysXRigidBody::PhysXRigidBody(Ogre::SceneNode* _node, PhysXScene& _s): node(_node), scene(_s)
{
	assert(node);
}
Alex46 вне форума Ответить с цитированием
Старый 21.07.2013, 02:25   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

первая ошибка из перечисленных вами это:
Код:
	typedef std::map<Ogre::String, PhysXCollisionShape>::iterator PhysXCollisionShapeIter;
здесь, но в хидерах включенных выше я не вижу ничего того что могло привести к этой ошибке(это похоже на работу препроцессора).
которая cpp-шка компилится при этом?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.07.2013, 12:19   #16
Alex46
Пользователь
 
Регистрация: 19.07.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
первая ошибка из перечисленных вами это:
Код:
	typedef std::map<Ogre::String, PhysXCollisionShape>::iterator PhysXCollisionShapeIter;
здесь, но в хидерах включенных выше я не вижу ничего того что могло привести к этой ошибке(это похоже на работу препроцессора).
которая cpp-шка компилится при этом?
PhysXScene.cpp

Код:
#include "stdafx.h"
#include "PhysXScene.h"
#include "PhysXPhysicsSystem.h"
#include "PhysXException.h"
#include "PhysXRigidBody.h"

PhysXScene::PhysXScene(Ogre::String& _name, int _threadNum): name(_name), threadNum(_threadNum), gravitySetted(false)
{

}

PhysXScene::PhysXScene()
{

}

PhysXRigidBody& PhysXScene::createStaticRigidBody(Ogre::String& name, Ogre::SceneNode* node)
{
	assert(node);
	PhysXRigidBody body(node, *this); //создание тела (здесь ошибка)
	
	//добавление тела в сцену
	
	body.construct();
	bodyTree.insert(std::make_pair(name, body));
	
	return bodyTree.find(name)->second;
}

PhysXRigidBody& PhysXScene::createDynamicRigidBody(Ogre::String& name, Ogre::SceneNode* node, float density)
{
	assert(node);
	PhysXRigidBody body(node, *this); //создание тела (здесь ошибка)
	
	//устанавливаем динамическое твёрдое тело
	
	body.setDynamicRigidBody();
	body.setDensity(density);

	//добавление тела в сцену
	
	body.construct();
	bodyTree.insert(std::make_pair(name, body));
	
	return bodyTree.find(name)->second;
}

void PhysXScene::simulate(float elapsedTime)
{
	//обработка сцены
	
	assert(scene);
	scene->simulate(elapsedTime);
	scene->fetchResults();

	//обновляем тела
	
	std::for_each(bodyTree.begin(), bodyTree.end(), [=](std::pair<Ogre::String, PhysXRigidBody> p)
	{
		p.second.setBodyChanged();
		p.second.update();
	});
}

Ogre::String& PhysXScene::getName()
{
	return name;
}

int PhysXScene::getThreadNum()
{
	return threadNum;
}

void PhysXScene::create()
{
	
	//создание описания сцены
	
	physx::PxSceneDesc desc(PhysXPhysicsSystem::getSingleton().getPhysics()->getTolerancesScale());

	//создание программного эмулятора cpu
	
	if(!desc.cpuDispatcher)
		desc.cpuDispatcher = physx::PxDefaultCpuDispatcherCreate(threadNum);
	
	//создание фильтра 
	
	if(!desc.filterShader)
		desc.filterShader = physx::PxDefaultSimulationFilterShader;

	
	//гравитация
	
	physx::PxVec3 g(gravity.x, gravity.y, gravity.z);

	desc.gravity = g;

	//создание сцены
	
	scene = PhysXPhysicsSystem::getSingleton().getPhysics()->createScene(desc);

	//проверка сцены
	
	assert(scene);
}

void PhysXScene::setGravity(Ogre::Vector3& g)
{
	
	//возбуждаем исключение
	//если гравитация уже установлена
	
	if(gravitySetted)
		throw PhysXGravitySettedEarly();

	gravity = g;
	gravitySetted = true;
}

Ogre::Vector3& PhysXScene::getGravity()
{
	return gravity;
}

bool PhysXScene::isGravitySetted()
{
	return gravitySetted;
}

PhysXRigidBody& PhysXScene::getRigidBody(Ogre::String& name)
{
	PhysXRigidBodyIter found = bodyTree.find(name);
	assert(found != bodyTree.end());
	return found->second;
}

void PhysXScene::addRigidBody(PhysXRigidBody& body)
{
	assert(&body.getRigidActor() && scene);
	scene->addActor(body.getRigidActor());
}

void PhysXScene::addRigidBody(Ogre::String& name)
{
	assert(scene);
	
	//ищем тело
	PhysXRigidBodyIter found = bodyTree.find(name);
	assert(found != bodyTree.end());
	
	scene->addActor(found->second.getRigidActor());
}

PhysXScene::~PhysXScene()
{
	
	//очищаем сцену
	
	bodyTree.clear();
	scene->release();
}

Последний раз редактировалось Alex46; 21.07.2013 в 12:26.
Alex46 вне форума Ответить с цитированием
Старый 21.07.2013, 12:30   #17
Alex46
Пользователь
 
Регистрация: 19.07.2013
Сообщений: 11
По умолчанию

Ребят спасибо большое за помощь. Ошибка пустяковой оказалась. Нужно было всего лишь вместо включение целого хедера сцены написать форвард определение класса.

Код:
#include "export.h"
#include "PhysXCollisionShape.h"
#include <OGRE\Ogre.h>
#include <PxPhysicsAPI.h>

class PhysXScene;

/**
@class PhysXRigidBody
класс твёрдого тела
*/
class PHYSXWRAPPER_API PhysXRigidBody
{
        ...
};
Alex46 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра - викторина. Ошибки, ошибки, ошибки!.. three_cats Общие вопросы C/C++ 1 27.10.2012 21:47
не вижу ошибки, компилятора нет Alllya Помощь студентам 0 16.12.2011 00:27
Создание компилятора Crivel Софт 7 23.01.2010 18:29
Ошибки компилятора Doktor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 16.01.2009 00:42