신입 게임 개발자의 프로그래밍 일기

[Unreal Engine 4]이득우의 언리얼 C++ 게임 개발의 정석 - 코드 11_10 issue 본문

GameProgramming

[Unreal Engine 4]이득우의 언리얼 C++ 게임 개발의 정석 - 코드 11_10 issue

KFGD 2020. 6. 29. 21:39

[게시글 수정 내역]

2020-06-30

- 1. 전방선언필요 -> 타입 선언 필요로 수정

  이 문제를 해결하는 방법에는 전방선언(Forward Declaration)과 Elaborated type specifier로 해결 가능

  기존 코드들과 유사하도록 게시글에서는 Elaborated type specifier로 해결하였다.

  (게시글과 같은 코드를 stackoveflow C++ 개발자들은 Elaborated type specifier라고 부르고,

   Unreal Engine 포럼 개발자들은 inline forward declaration이라고도 부르는 것 같다.)

 

  참고1: https://stackoverflow.com/questions/29580288/what-is-class-in-class-datatype-variable-in-unreal-engine-shooter-game-samp

- 본 게시글과 유사한 형태의 stackoverflow 글

 

what is 'class' in 'class DataType* Variable' in Unreal Engine Shooter Game Sample

I recently downloaded the Shooter Game for Unreal 4 Engine and I am just trying to pick apart the c++ but my c++ isn't the best I notice a variable called class AShooterCharacter* MyPawn; Set in...

stackoverflow.com

 

참고2: https://stackoverflow.com/questions/28007165/class-keyword-in-variable-definition-in-c

- 'The C++ standard doesn't use the terms "forward declaration" or "inline forward declaration". (이하 생략)'라는 댓글 덕분에 오랜만에 C++ Standard를 다시 찾아보게 됨...

 

'class' keyword in variable definition in C++

Before anyone asks, yes, this is part of a homework, and yes, I did a lot of Googling before asking. I spent the last hour searching intensively on Google with many, many different keywords, but just

stackoverflow.com

2020-06-29

- 게시글 게시

 

--------------------------------------------------------------------------------------------

 

도서 '이득우의 언리얼 C++ 게임 개발의 정석' 코드 11-10 작성 중 발생한 이슈

 

도서를 공부하다 보니 문제가 발생했다.

 

도서는 언리얼 엔진 4.19를 기준으로 코드를 작성되어 있고

나는 4.24 버전으로 작업해서 발생한 문제인지는 모르겠으나...

(버전 문제는 아닌 거 같은데... 흠)

 

뭐 아무튼...

해결 코드는 다음과 같다.

 

ABCharacterStatComponent.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "Unreal_Book.h"
#include "Components/ActorComponent.h"
#include "ABCharacterStatComponent.generated.h"

UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class UNREAL_BOOK_API UABCharacterStatComponent : public UActorComponent
{
	GENERATED_BODY()

public:	
	// Sets default values for this component's properties
	UABCharacterStatComponent();

protected:
	// Called when the game starts
	virtual void BeginPlay() override;
	virtual void InitializeComponent() override;

public:
	void SetNewLevel(int32 NewLevel);

private:
	// 도서 코드에서 발생한 문제
	//1. 타입 선언 필요 (수정 전에는 전방 선언 필요라고 적음)
	//2. 초기화 코드는 cpp
	//static FABCharacterData* CurrentStatData = nullptr;

	static struct FABCharacterData* CurrentStatData; // 수정 코드

	UPROPERTY(EditInstanceOnly, Category = Stat, Meta = (AllowPrivateAccess = true))
	int32 Level;

	UPROPERTY(EditInstanceOnly, Category = Stat, Meta = (AllowPrivateAccess = true))
	float CurrentHp;

public:	
	// Called every frame
	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

		
};

 

ABCharacterStatComponent.cpp 일부분

#include "ABCharacterStatComponent.h"
#include "ABGameInstance.h"


// 초기화 코드
FABCharacterData* UABCharacterStatComponent::CurrentStatData = nullptr;

 

이상으로 글 작성 종료!

 

[잡담]

그런데 tistory 코드블록 기능 괜찮네요

감사합니다 tistory 개발자분들~

Comments