मेरी समस्या यह है कि, जब मैं एक वर्ग के लिए एक कन्स्ट्रक्टर कहता हूं जिसे मैंने बनाया है तो मुझे निम्न त्रुटि मिलती है।.cpp फ़ाइल सहित क्लास कन्स्ट्रक्टर के अनिर्धारित संदर्भ
main.cpp: 20: `StaticObject :: StaticObject (ग्राफिक्स *, sf :: स्ट्रिंग,
sf :: Vector2) '
यह समस्या जा सकता है' तय करने के लिए अपरिभाषित संदर्भ 'key.cpp में .cpp फ़ाइल के लिए शामिल करना शामिल है।
...
#include "GameObjects/StaticObject.cpp"
...
हालांकि यह समस्या हल करता है, यह एक खराब समाधान की तरह लगता है और जो मैंने पहले बताया था उसके खिलाफ चला जाता है। क्या इस समस्या को हल करने का कोई और तरीका है? मैं इस कार्यक्रम को कोड/संकलित करने के लिए जी ++ के साथ नेटबीन्स 7.3 का उपयोग कर रहा हूं। नीचे प्रासंगिक कोड है।
main.cpp
...
#include <SFML/Graphics.hpp>
#include "Graphics/Graphics.hpp"
#include "GameObjects/StaticObject.hpp"
int main(int argc, char** argv) {
//SETUP
Graphics graphics;
background = new StaticObject(&graphics, "Data/Images/BackgroundPlaceholder.png", sf::Vector2f(0,0));
...
main.hpp
...
#include <SFML/Graphics.hpp>
#include "GameObjects/StaticObject.hpp"
...
// Objects
StaticObject *background;
...
StaticObject.hpp
#include <SFML/Graphics.hpp>
#include "../Graphics/Graphics.hpp"
class StaticObject{
public:
StaticObject();
StaticObject(Graphics *_graphics, sf::String texture_filename, sf::Vector2f _position);
StaticObject(const StaticObject& orig);
virtual ~StaticObject();
private:
// The sprite stores the position
sf::Sprite *sprite;
sf::Texture *texture;
};
StaticObject.cpp
#include "StaticObject.hpp"
#include <SFML/Graphics.hpp>
#include "../Graphics/Graphics.hpp"
StaticObject::StaticObject(){
}
StaticObject::StaticObject(Graphics *_graphics, sf::String texture_filename, sf::Vector2f _position) {
sprite = _graphics->AddSprite(texture_filename);
sprite->setPosition(_position);
}
StaticObject::StaticObject(const StaticObject& orig) {
}
StaticObject::~StaticObject() {
}
मैं निम्न पंक्ति main.cpp में जोड़ने के लिए है, तो त्रुटि गायब हो जाता है।
#include "GameObject/StaticObject.cpp"
किसी को भी व्याख्या कर सकते हैं करें:
क्यों इससे समस्या हल हो?
क्यों .cpp को .hpp फ़ाइल सहित शामिल नहीं किया गया था?
क्या ऐसा करने का कोई बेहतर तरीका है?
गेमऑब्जेक्ट/StaticObject.cpp आपकी परियोजना में शामिल है? ऐसा लगता है कि यह त्रुटि से है – bizzehdee
'प्रोजेक्ट में' से आपका क्या मतलब है? उपरोक्त के रूप में, #include का उपयोग समस्या को हल करने लग रहा था लेकिन एक बेहतर तरीका होना चाहिए। रास्ते से धन्यवाद :) – OMGtechy
सीपीपी शामिल न करें, इसे संकलित करें और ऑब्जेक्ट फ़ाइल से लिंक करें। – chris