오븐 노트

[C++] 전방선언 본문

Develop/C++

[C++] 전방선언

오 븐 2023. 3. 8. 18:52

Monster.cpp

#include "Monster.h"

void Monster::KillMe()
{
	_hp = 0;
}

Monster.h

#pragma once
class Monster
{
public:

	void KillMe();

public:
	int _monsterId; // +0
	int _hp; // +4
	int _defence; // +8
	// ...
};

Player.cpp

#include "Player.h"
#include "Monster.h"

void Player::KillMonster()
{
	_target2->KillMe();

	_target2->_hp = 0;
	// 위를 풀어쓰면 아래
	// [ 주소 ] -> [ [monsterId] [hp] [defence]  ]
	(*_target2)._hp = 0;
}

void Player::KillMonster2()
{
	_target2->_hp = 0;
}

Player.h

#pragma once

//#include "Monster.h"

//class Monster; // 전방선언

class Player
{
public:

	void KillMonster();

	void KillMonster2();

public:
	int _hp;
	int _attack;

	//Monster _target; // 메모리 낭비
	class Monster* _target2; // 전방선언
	Player* _target; // ex) 다른 player와 연결할 경우
};

CPP_study.cpp

#include <iostream>
using namespace std;
#include "Player.h"

int main()
{
    // Player는 몇 바이트인가?
    // int 2개 = 2 * 4 = 8바이트

    // sizeof(Monster*) = 4 or 8

    Player p1; // 지역변수 (Stack)

    Player* p2 = new Player(); // 동적할당 (Heap)

    p1._target = p2; // ex) 다른 player와 연결할 경우

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 함수 포인터 #2  (0) 2023.05.01
[C++] 함수 포인터 #1  (0) 2023.04.28
[C++] TextRPG (OOP) #1~3  (0) 2023.03.03
[C++] 캐스팅 4총사  (0) 2023.03.03
[C++] 얕은 복사 VS 깊은 복사 #1~2  (0) 2023.02.28