Forehand içerir Ben C++ programlama için oldukça yeni ve çerçeve olarak Ogre3D kullanıyorum bahsetmek istiyorum (okul proje nedenlerinden dolayı). Oyuncu sınıfında OyunObject sınıfından miras alan bir sınıf var. Aşağıdaki hata ile karşı karşıya ediyorum projeyi inşa etmeye çalışırken:Tanımsız temel sınıf, mevcut
Error C2504 'GameObject' : base class undefined - player.h (9)
GameObject standartlarında bir oyuncu sınıfının başlık dosyası içinde tanımlanmamış ima ediyorum hangisi. Ancak aslında GameObject başlık dosyasını Player'ınki ile ekledim (aşağıdaki kod). Kodda olup bitenler dahil olmak üzere farkındayım. Şimdi birkaç gündür bu sorun üzerinde Stumped oldum
: Ben dışarıda bırakın Ancak eğer bu ben oluşmadan nasıl veya neden emin değilim hangi farklı hataların bütün bir listesini almak içerir İnternet hakkında henüz bir çözüm bulamadık (CPlusPlus makalesi ağırlıklı olarak danışmanlık yapıyorum: http://www.cplusplus.com/forum/articles/10627/).
Aşağıda listelenen başlık dosyalarının kaynak dosyaları yalnızca ilgili üstbilgi dosyalarını içerir.
Player.h
#pragma once
#ifndef __Player_h_
#define __Player_h_
#include "GameObject.h"
class Player : public GameObject {
// ... Player class interface
};
#endif
GameObject.h
#pragma once
#ifndef __GameObject_h_
#define __GameObject_h_
#include "GameManager.h"
// Forward declarations
class GameManager;
class GameObject {
// ... GameObject class interface
};
#endinf
GameObject başlık görülebileceği gibi GameManager içerir.
main.h ile
// Include guard
#ifndef __Main_h_
#define __Main_h_
// Includes from Ogre framework
#include "Ogre.h"
using namespace Ogre;
// Includes from projet headers
#include "BaseApplication.h"
#include "GameManager.h"
// forward declarations
class GameManager;
class Main : public BaseApplication
{
// ... Main interface
};
#endif
: başlık dosyası aşağıdaki gibi görünür Ana sınıfı yoktur ait
GameManager.h
#pragma once
// Include guard
#ifndef __GameManager_h_
#define __GameManager_h_
// Includes from project
#include "Main.h"
#include "Constants.h"
#include "GameObject.h" // mentioned circular includes
#include "Player.h" // "
// Includes from system libraries
#include <vector>
// Forward declarations
class GameObject;
class GameManager {
// ... GameManager interface
};
#endif
top için Konuyla ilgili yaptığım tüm okumalar ve aynı hataya sahip diğer bireyler olurdum. Bunu anlamaya ama henüz boşuna. Umarım birisi bana yardım etmek için zaman harcayabilir ve herhangi bir hatalı kod veya konvansiyona işaret edebilir.
Sınıf tanımlarınızdan sonra '' 'var mı? Onlar eksik – vu1p3n0x
Benim kötü, evet sınıf tanımları yarı-kolon ile biter. Buna göre ana yazıyı düzenleyeceğim. – Stephan
Her ikisi de sınıf tanımını ve bu sınıfı ileriye bildirmeyi içeren bir anlam yoktur. İleri bildirme yeterliyse, içeriklerini kaldırın. Sınıf tanımına ihtiyacınız varsa, bildirimi kaldırın. – molbdnilo