Undefined reference to constructeur de la classe, y compris .fichier cpp correctifs

Le problème que j'ai, c'est que, quand je l'appelle un constructeur pour une classe, j'ai créé, j'obtiens l'erreur suivante.

principal.rpc:20: undefined reference to
`StaticObject::StaticObject(Graphiques*, sf::String,

sf::Vector2)'

Ce problème peut être "fixe" ajouter un include pour le .fichier cpp dans main.cpp comme si.

...
#include "GameObjects/StaticObject.cpp"
...

Même si cela résout le problème, cela semble être une mauvaise solution et va à l'encontre de ce que j'ai déjà été dit. Est-il un autre moyen pour résoudre ce problème? Je suis à l'aide de Netbeans 7.3 avec g++ pour le code/compiler ce programme. Ci-dessous est le code pertinent.

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));

...

principal.php

...

#include <SFML/Graphics.hpp>
#include "GameObjects/StaticObject.hpp"

...

//Objects
StaticObject *background;
...

StaticObject.php

#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() {
}

Si j'ajoute la ligne suivante main.cpp, l'erreur disparaît.

#include "GameObject/StaticObject.cpp"

Quelqu'un peut-il expliquer:

  1. Pourquoi cette solution résout le problème?

  2. Pourquoi l' .le rpc n'a pas été inclus implicitement à travers notamment la .php
    fichier?

  3. Est-il une meilleure manière de faire ceci?

  • est GameObject/StaticObject.cpp inclus dans votre projet? n'a pas l'air comme c'est à partir de l'erreur
  • Qu'entendez-vous par " dans le cadre du projet? Comme ci-dessus, en utilisant le #include a semblé résoudre le problème, mais il doit y avoir une meilleure façon. Je vous remercie par la route 🙂
  • Ne pas inclure le rpc, le compiler et un lien vers le fichier de l'objet.
  • y compris le fichier cpp, le compilateur pour générer ce code dans le cadre de ce fichier (que vous ne devriez pas le faire), ce que vous devez faire est de compiler le GameObject/StaticObject.cpp fichier comme son propre objet, et de relier les 2 objets. de quoi êtes-vous utiliser pour construire?
  • Je viens de vérifier le projet NetBeans de l'arbre, et même si la classe a été faite à l'aide de NetBeans et là plus tôt, il semble avoir en quelque sorte retiré lui-même. Après re-ajouter les fichiers concernés, le problème a disparu. Merci beaucoup! Postez votre réponse et je vais le marquer comme étant la solution si c'est possible merci. 😀
InformationsquelleAutor OMGtechy | 2013-03-22