Simple question.

Can anyone explain to me why I can't do this...

1
2
3
4

GameObject* m_enemy;
	m_enemy = new Enemy();
closed account (o1vk4iN6)
You can do that: http://ideone.com/YNoGUi
closed account (Dy7SLyTq)
can you show us your code? you could be inheriting wrongly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "Game.h"
#include <SDL_image.h>
#include "TextureManager.h"

int m_currentFrame;


bool Game::init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen)
{
	int flags = 0;
	if(fullscreen)
	{
		flags = SDL_WINDOW_FULLSCREEN;
	}


	if(SDL_Init(SDL_INIT_EVERYTHING) == 0)
	{
		m_pWindow = SDL_CreateWindow(title, xpos, ypos, width, height, flags);

		if(m_pWindow != 0)
		{
			m_pRenderer = SDL_CreateRenderer(m_pWindow, -1, 0);

			if(m_pRenderer != 0)
			{
				SDL_SetRenderDrawColor(m_pRenderer, 255, 255, 255, 255);
			}
			else
			{
				return false;
			}}
			else
			{
				return false;
			}}
	else
	{
		return false;}

	 
			m_bRunning = true;

			if(!TheTextureManager::Instance()->load("assets/animated.bmp","animate", m_pRenderer))

				

			m_enemy->load(0, 0, 128, 82, "animate");

			m_go->load(100, 100, 128, 82, "animate");
			m_player->load(300, 300, 128, 82, "animate");

			m_gameObjects.push_back(m_enemy);
			m_gameObjects.push_back(m_go);
			m_gameObjects.push_back(m_player);
			
{
	return false;
}



		
			return true;
}
There's not enough information in the code provided here. Ideally, we'd need to see the class definitions for GameObject and Enemy.

What you're trying to achieve is possible, though. Here's a basic example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>

class GameObject
{
protected:
    std::string name;
public:
    GameObject() : name( "GameObject" ){}
    virtual ~GameObject(){ std::cout << "Object d'tor\n"; }
    void print() const { std::cout << name << std::endl; }  
};

class Enemy: public GameObject
{
private:
    int health;
public:
    Enemy(){ name = "Enemy"; }
    ~Enemy(){ std::cout << "Enemy d'tor\n"; }
};

int main( int argc, char* argv[] )
{
    GameObject *enemy = new Enemy();

    enemy->print();

    delete enemy;

    return 0;
}


Hope this helps.
Last edited on
Topic archived. No new replies allowed.