-strlen(변수명) -> string 길이 반환
main 에서 동적할당으로 클래스 만든 후 delete 안하면 -> 그 할당된 메모리도 릭 나고 할당된 클래스의 소멸자도 호출 안되서 클래스 내부에서 할당한 메모리도 할당 해제 적용 안됨.반환자료형 함수명(매개변수자료형 매개변수명) const 에서 const -> 여기선 멤버변수 변경 안하겠다는 약속. 헤더와 소스코드 둘 다 붙여야 함에 주의!!자료형 GetX() const, void setX(자료형 변수명) 컴파일러는 위에서 아래로 읽어나간다
아래에 있는 클래스 참조, 이용하면 에러
맨 위에 class Inventory; 선언해 두면 괜찮아짐
Inventory myInventory는 불가능 (해당 class의 내용물을 모르기 때문)전방 선언은 그냥 어딘가에 정의 있으니 나중에 찾으면 되는 건 냅둬라 하는 것
내용물까지 알 수 있게 하려면? 헤더파일을 쓴다.
왜 항상 헤더만 쓰지 않는가? 하나의 헤더파일만 수정되어도 모든 클래스들이 영향을 받고 재컴파일
객체 포인터 자료형이면 전방선언, 값 자료형은 include: 전방선언은 다른 파일에 있는 클래스에도 헤더처럼 적용가능!
의문점:
class PlayerCharacter
{
public:
Inventory MyInventory
}//이결 해결하는 방법이 헤더 include
이너 클래스로 해결?
해당 클래스 파일 내에 두 가지 이상의 클래스 선언 후 서로가 서로를 "값 자료형" 으로 가질 때 - 이너 클래스로 해결하던지...
#include 하던지.class X
{
friend class Y;
public...
이런 식으로.
X에 선언된 protected/private 멤버는, 그 멤버가 자손 클래스 Xson 객체에 포함되어 있어도 X의 friend class Y가 접근 가능하다.Xson 자체에서 새로 선언한 private/protected 멤버는 Y가 접근할 수 없다.friend 선언할 수 없으니 Y 내에서 해당 변수들 받아와서 setter, getter 만들어서 처리업캐스팅) 그거 부모쪽 함수 아니고 자손 쪽 함수 불러오려고.virtual 붙힌 함수는 어차피 자식에서도 가상 함수다. but 앞으로의 확장성/가독성 위헤 virtual void 붙혀주는 것. 이거 오버라이드다 하고.virtual 대신 override 함수 뒤에 붙혀 주는 게 더 안전. void X() overrideI 붙은 클래스는 인터페이스 -> C++에선 지원 안하긴 하지만 추상 클래스를 인터페이스로 쓰는 경우 많다.std::stringchar*[] 대체재라고 생각하면 된다.myClass<int>, myClass<float> 이런 식으로 다양하게 만드는 것.template <typename T>
T add (T inA, T inB) {} //이건 입력값 둘 다 한 자료형이여야
//두 자료형을 받을 수 있는 걸 만드려면?
template <typename T, typename U>
T add (T inA, U inB){} //이런 식으로
inline: 함수 앞에 붙여서 헤더에 함수 정의해도 괜찮도록 하는 단어. (템플릿 때 많이 쓴다)Blueprint 대신 C++Config, Content, Source, 프로젝트명.uproject 만 남기고 나머지 싹 다 삭제. 이후 uproject 파일에 shift+우클릭으로 Generate Visual Studio project files.sln 파일 열고 F5 누르면 바로 언리얼 에디터 열리고 라이브 에디팅 가능해 진다. Development Editor 상태로 해야 에디팅 원활하다는 점에 주의Ctrl+Shift+B: 프로젝트 빌드F5: 빌드 및 실행Shift+F5: 실행 중인 언리얼 에디터 종료Ctrl+Shift+F5: 실행중인 언리얼 에디터 종료 후 빌드 및 실행. 이렇게 해서 코드 수정된 거 언리얼에 적용할 수 있다.#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "MyClassUnrealObject.generated.h"
/**
*
*/
UCLASS()
class MYCLASS_API UMyClassUnrealObject : public UObject
{
GENERATED_BODY()
};