함수
[Unreal] UI 마우스 관한 동작 이벤트 설정방법
UI내 버튼이다. 총 5개의 이벤트가 존재하는데 On Clicked : 클릭할 시 On Pressed : 클릭한 후 지속적으로 누르고 있을 시 On Released : 클릭 후 뗐을 시 On Hovered : 마우스가 UI 범위 안에 들어왔을 시 On Unhovered : 마우스가 UI 범위 안에 들어온 후 벗어날 시 이벤트 그래프에서 각각의 함수들의 원형을 봤더니 리턴형 void에 파라미터 void이다. 즉 void 함수이름() C++로 구현하고자 하는데 각각 해당되는 동작 클래스 변수로 되어있다. 각 클래스 원형들을 봤더니 아예 빈 껍데기이다 그래서 동적으로 바인딩하면 어떨까해서 해봤다. 클릭 이벤트 클래스 변수에 할당 해줬다. void UInventoryListUI::InitButtons() { B..
C++ 간단하게 사용할 수 있는 포인터 해제 매크로 함수
#include using namespace std; #define SAFETY_CHECK(ptr) \ { \ if (ptr == nullptr) \ { \ cout
C++ 추상 클래스 / 순수 가상 함수 (Pure Virtual Function)
순수 가상함수란 선언(declaration)만 있고 구현(definition)이 없는 가상 함수다. virtual void Func() = 0; 추상 클래스 위와 같은 순수 가상함수를 하나라도 가지고 있는 클래스를 추상클래스(abstract class)라고 한다. 추상 클래스는 객체를 생성할 수 없다. 추상 클래스는 멤버 함수의 원형만을 정의하고 그 구현은 자식 클래스에서 하게 된다. 추상 클래스를 상속받는 자식 클래스는 반드시 순수 가상함수를 오버라이딩 하여 재정의 해야만 한다. 그렇지 않다면 아래 그림과 같이 컴파일 오류가 난다. 이렇게 추상클래스를 활용하면 파생클래스에서 순수 가상함수를 재정의 하게끔 강제할 수 있다. #include using namespace std; class Parent { ..
C++ 클래스 상속 불가 및 함수 오버라이딩 불가 (final)
최종 키워드를 사용하여 상속할 수 없는 클래스를 지정하거나 파생 클래스에서 재정의할 수 없는 가상 함수를 지정할 수 있다. 다음 예제에서는 최종 키워드를 사용하여 클래스를 상속받을 수 없도록 지정한다. class Parent final { }; class Derived : public Parent { }; 다음 예제에서는 최종 키워드를 사용하여 가상 함수를 오버라이딩 할 수 없도록 지정한다. class Parent { public: virtual void Print() final { } virtual void Print2() { } }; class Derived : public Parent { public: virtual void Print() override { } virtual void Print2(..
C# 클래스 상속 불가 및 함수 오버라이딩 불가 (sealed)
클래스에 적용된 경우 sealed 한정자는 다른 클래스가 해당 클래스에서 상속하지 못하도록 한다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; public class Parent { } public sealed class Derived : Parent { } public class AnotherDerived : Derived { } public class Test { public static void Main() { AnotherDerived anotherDerived = new AnotherDerived(); } } 함수 같은 경우에는 가상 함수 오버라이딩 방지용으로 쓰여진다. using Sys..
C++ 친구 클래스 및 함수 (friend)
friend 클래스는 friend로 선언된 다른 클래스의 private 및 protected 멤버에 접근할 수 있다. 사용법은 friend 키워드를 사용하여 클래스나 함수를 명시 해 주는 것이다. 함수 같은 경우에는 전역함수랑 동일해진다, static 클래스 종속 함수랑은 별개. #include #include #include using namespace std; class A { friend class B; int mVal = 0; protected: void ProtectedFunc() { cout
[Unreal] 컴포넌트 부착 함수와 방법
// 컴포넌트가 등록이 안되어있을 시, 렌더링 되기 위해선 컴포넌트를 등록 해줘야됨. // 오직 NewObject()로 생성 되어있을 시, CreateDefaultSubObject()로 생성 되었으면 해줄 필요x 뻥남 컴포넌트->RegisterComponent(); // 루트 컴포넌트가 등록이 안되어 있을 시 (월드 기준으로 됨) 컴포넌트->SetupAttachment(부착하고자 할 액터의 루트 컴포넌트, 메쉬 소켓 명칭); // 루트 컴포넌트가 등록이 되어 있을 시 컴포넌트->AttachToComponent(부착하고자 할 액터의 루트 컴포넌트, 부착 방법, 메쉬 소켓 명칭); AttachTo < 버려질 함수라 가급적이면 사용권장 x 부착 방법은 아래와 같다. KeepRelativeTransform : ..
C/C++ 전처리기의 모든 것 (예외, 매크로, 토큰)
전처리기 컴파일러는 사용자가 작성한 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 작업들을 먼저 수행한다. 첫 문자는 항상 ‘#’으로 시작한다. ANSI 표준에 따른 C의 전처리문의 종류가 아래에 나와 있다. 파일 처리를 위한 전처리문 : #include 형태 정의를 위한 전처리문: #define, #undef 조건 처리를 위한 전처리문: #if, #ifdef, #ifndef, #else, #elif, #endif 에러 처리를 위한 전처리문: #error 디버깅을 위한 전처리문: #line 컴파일 옵션 처리를 위한 전처리문: #pragma #include 꺽쇠 괄호 솔루션 파일이 위치한 폴더가 아닌 타 폴더에 있을 시, 쌍 따옴표는 " " 같은 폴더에 있을 시 // 타 폴더 #include #inclu..
C# Action/Func/Predicate
Action Delegate .NET의 Action delegate는 하나의 파라미터를 받아들이고, 리턴 값이 없는 함수에 사용되는 Delegate이다. Action delegate는 System 네임스페이스에서 제공되는데, 파라미터의 수에 따라 0개부터 16개의 파라미터까지 받아들이는 delegate가 있다. 즉, 파라미터가 없는 Action은 Action delegate, 파라미터가 1개인 Action delegate, 2개인 Action delegate - 이렇게 16개 파라미터가 있는 Action delegate가 존재한다. 많은 함수의 경우 대개 3~5개의 파라미터까지 있는 걸로 본다면, 상당히 많은 함수에 대한 표준 delegate를 미리 만들어 둔것으로 보면된다. 물론 중요한 특징은 리턴 값..
C++ 콜백 CallBack 함수
#include #include #include #include #include #include using namespace std; using void_two_params_pointer = std::function; void Function(bool _is_value, int _value) { cout