Comment créer un objet à l'intérieur d'une autre classe avec un constructeur?

Alors que je travaillais sur mon code, qui est conçu de façon modulaire. Maintenant, une de mes classes, que l'on appelle Splash a pour créer un objet d'une autre classe qui est appelée Emitter. Normalement vous devez juste créer l'objet et être fait avec elle, mais qui ne fonctionne pas ici, comme le Emitter classe a un constructeur personnalisé. Mais lorsque j'essaye de créer un objet, il ne fonctionne pas.

Comme un exemple;

Emitter a un constructeur comme suit: Emitter::Emitter(int x, int y, int amount); et doit être créé de sorte qu'il peut être consulté dans le Splash classe.

J'ai essayé de le faire, mais il ne fonctionne pas:

class Splash{
    private:
        Emitter ps(100, 200, 400, "firstimage.png", "secondimage.png"); //Try to create object, doesn't work.
    public:
       //Other splash class functions.
}

J'ai essayé aussi ce qui ne fonctionne pas non plus:

class Splash{
    private:
        Emitter ps; //Try to create object, doesn't work.
    public:
       Splash() : ps(100, 200, 400, "firstimage.png", "secondimage.png")
       {};
}

Edit: je sais que la deuxième façon est censé fonctionner, cependant il ne le fait pas. Si je supprime le Emitter Section, le code fonctionne. mais quand je le fais la deuxième façon, aucune fenêtre ne s'ouvre, aucune application n'est pas exécutée.

Alors, comment puis-je créer mon Emitter objet pour une utilisation dans Splash?

Edit:

Voici mon code pour l'émetteur de la classe et de l'en-tête:
Header

//Particle engine for the project

#ifndef _PARTICLE_H_
#define _PARTICLE_H_

#include <vector>
#include <string>
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "image.h"

extern SDL_Surface* gameScreen;

class Particle{
    private: //Particle settings
        int x, y;
        int lifetime;
    private: //Particle surface that shall be applied
        SDL_Surface* particleScreen;
    public: //Constructor and destructor
        Particle(int xA, int yA, string particleSprite);
        ~Particle(){};
    public: //Various functions
        void show();
        bool isDead();
};

class Emitter{
    private: //Emitter settings
        int x, y;
        int xVel, yVel;
    private: //The particles for a dot
        vector<Particle> particles;
        SDL_Surface* emitterScreen;
        string particleImg;
    public: //Constructor and destructor
        Emitter(int amount, int x, int y, string particleImage, string emitterImage);
        ~Emitter();
    public: //Helper functions
        void move();
        void show();
        void showParticles();
};

#endif

et voici l'émetteur fonctions:

#include "particle.h"
//The particle class stuff
Particle::Particle(int xA, int yA, string particleSprite){
//Draw the particle in a random location about the emitter within 25 pixels    
x = xA - 5 + (rand() % 25);
y = yA - 5 + (rand() % 25);
lifetime = rand() % 6;
particleScreen = Image::loadImage(particleSprite);
}
void Particle::show(){
//Apply surface and age particle
Image::applySurface(x, y, particleScreen, gameScreen);
++lifetime;
}
bool Particle::isDead(){
if(lifetime > 11)
return true;
return false;
}
//The emitter class stuff
Emitter::Emitter(int amount, int x, int y, string particleImage, string emitterImage){
//Seed the time for random emitter
srand(SDL_GetTicks());
//Set up the variables and create the particles
x = y = xVel = yVel = 0;
particles.resize(amount, Particle(x, y, particleImage));
emitterScreen = Image::loadImage(emitterImage);
particleImg = particleImage;
}
Emitter::~Emitter(){
particles.clear();
}
void Emitter::move(){
}
void Emitter::show(){
//Show the dot image.
Image::applySurface(x, y, emitterScreen, gameScreen);
}
void Emitter::showParticles(){
//Go through all the particles
for(vector<Particle>::size_type i = 0; i != particles.size(); i++){
if(particles[i].isDead() == true){
particles.erase(particles.begin() + i);
particles.insert(particles.begin() + i, Particle(x, y, particleImg));
}
}
//And show all the particles
for(vector<Particle>::size_type i = 0; i != particles.size(); i++){
particles[i].show();
}
}

Est également ici la Splash Classe et la Splash-Tête.

La deuxième version est la façon de le faire et il doit de travail. Avez-vous des erreurs? Si oui, quel genre?
Comment s'est déroulée la dernière approche de l'échec? Semble tout à fait bien.
mis à jour pour refléter.
le point-virgule manquant à la fin de la classe Splash déclaration?
oh, c'est là. désolé.

OriginalL'auteur Rivasa | 2012-08-07