본문 바로가기
반응형

C++48

C++ Error C2011 : Class, Struct, Enum 형식 재정의 [C++] Error C2011 : Class, Struct, Enum 형식 재정의 문제 원인1) 클래스, 구조체, 열거형 이름이 중복2) 헤더파일이 중복으로 추가되서 나오는 에러 다른 클래스에 같은 이름을 사용하는 것이 없는지 확인할 필요가 있다. 언리얼에서 델리게이트 작업 도중 중복된 이름이 있어서 오류를 발견했다. 1>F:\Projects\MainProject\Source\MainProject\Enemy\Components\EnemyStateComponent.h(17): error C2011: '_Script_MainProject_eventStateTypeChanged_Parms': 'struct' 형식 재정의1>F:\Projects\MainProject\Source\MainProject\Chara.. 2023. 12. 22.
Unreal C++ 버튼을 눌러 게임 종료 (QuitGame) [Unreal/C++] 버튼을 눌러 게임 종료 (QuitGame) 언리얼 엔진에서 게임 종료를 위해서 Kismet 라이브러리의 UKismetSystemLibrary::QuitGame 함수를 사용한다.월드와 플레이어 컨트롤러 종료 옵션 플랫폼 옵션이 필요하다.ReferencesModuleEngineHeader/Engine/Source/Runtime/Engine/Classes/Kismet/KismetSystemLibrary.hInclude#include "Kismet/KismetSystemLibrary.h"Source/Engine/Source/Runtime/Engine/Private/KismetSystemLibrary.cppSyntaxstatic void QuitGame( const UObject * .. 2023. 12. 16.
C++ #define, 매크로 [C/C++] #define, 매크로 매크로 #define단순 매크로가독성이 좋아지고 상수의 변경이 용이함형태#define MAX 100#define PI 3.14함수 매크로define을 이용해 매크로를 함수처럼 사용할 수 있다.형태#define SQUARE (x) ((x) * (x))#define 매크로명(매개변수) 치환 텍스트 내장 매크로미리 정의 되어 내장되어 있는 매크로 2022. 12. 6.
카멜 표기법, 스네이크 표기법 [C/C++] 카멜 표기법, 스네이크 표기법 카멜 표기법카멜 표기법(Camel case 카멜 케이스[*]) 또는 낙타 표기법 프로그래밍에서 파일, 변수, 함수 등 대상의 이름을 띄어쓰기 없이 짓기 위하여 따르는 관례인 네이밍컨벤션(Naming convention)의 하나다.맨 첫 글자를 제외한 각 합성어의 첫 글자만 대문자로 표기한다.단어 전체적으로 소문자를 사용합성한 단어의 모양이 쌍봉낙타의 등과 비슷하다는 뜻에서 이름붙었다.camelCase(일반적인 변수 이름)isCamelCase(Boolean 타입의 변수 이름)스네이크 표기스네이크 표기법(Snake case 스네이크 케이스[*]) 또는 스네이크 표기법은 프로그래밍에서 파일, 변수, 함수 등 대상의 이름의 띄어쓰기를 언더바(_)로 표기하는 관례인 네.. 2022. 12. 6.
C++ 클래스 private접근, Friend 지정 사용 [C++] 클래스 private접근, Friend 지정 사용 클래스의 멤버 중 private로 지정된 것들은 자신만 접근할 수 있게 설계되었는데 예외는 있다.Friend 키워드이다. 내 소중한 물건을 친구에게 빌려줄 수 있듯이 클래스에서 친구로 지정한 것들은 접근이 가능하다.전역 함수, 클래스, 멤버 함수를 Friend로 지정 가능하다.그 세 가지 예시를 하나의 코드에 담았다.  #include using namespace std;// * 클래스의 순서도 중요// 하단 예시 코드는 클래스의 순서를 고려하지 않은 코드임class PrivateClass;class UnknownClass{public: void FriendMemberFunction(PrivateClass& pc); };class Private.. 2022. 11. 17.
C++ 오류 해결 Error:C4996, strcpy, strncpy 사용시 에러 발생 [C++ / 오류 해결] Error:C4996, strcpy, strncpy 사용시 에러 발생 Error C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 이 함수 또는 변수는 안전하지 않을 수 있습니다. 대신 strcpy_s를 사용해 보세요. 사용 중단을 비활성화하려면 _CRT_SECURE_NO_WARNINGS를 사용합니다. // 해당 기능을 사용하는 소스코드 상단에 추가#define _CRT_SECURE_NO_WARNINGS // 1번 째 방법#p.. 2022. 11. 16.
LV3 C++ 접근지정자 [lv3/C++] 접근지정자 접근지정자는 클래스의 멤버 변수나 멤버 함수들의 접근 권한을 설정하는 키워드이다. 3가지(private, protected, public) 키워드가 있으며 각각 접근할 수 있는 범위가 다르다. private- 클래스 자신 및 친구(friend)라 선언한 클래스만 접근 가능- private로 선언된 경우 자신의 멤버 함수 내부에서 멤버 변수들을 사용할 수 있다.- friend로 선언된 "함수"나 "클래스"는 private로 선언된 변수나 함수를 접근할 수 있다. protected- 클래스 자신 및 파생 클래스(자식 클래스)만 접근 가능- protected로 선언된 경우 자신의 멤버 함수 내부에서 멤버 변수들을 사용할 수 있다.- 상속받은 자식클래스의 경우도 멤버 함수 내에서 접.. 2022. 9. 21.
LV3 C++ 클래스와 객체 [lv3/C++] 클래스와 객체 객체지향 프로그래밍의 뿌리 클래스와 객체를 알아보자. 객체라는 단어를 사전에서 찾아보면 실제 세계에 존재하거나 생각할 수 있는 것이라고 나온다. 객체지향 이론에서는 개념이나 논리와 같은 무형적인 것들도 객체로 간주하는데 프로그램을 배울 때는 개념 잡기가 힘들다. 클래스는 쉽게 말해 객체를 찍어낼 수 있는 틀이라고 할 수 있다. 과거 한 교수님은 붕어빵 틀에 빗대어 가르치시곤 했는데 지금까지도 기억나는 것을 보니 잘 빗대어 가르치셨다고 생각되지만 붕어빵 예시는 들지 않겠다. 스무고개라는 어릴적 놀이를 기억하는지 모르겠지만, 우리는 스무고개를 할 때 어떤 것의 특징을 묻는다. 주제가 인물이라면 나이가 몇인지, 무슨 일을 하는지, 어떤 것을 먹는지 등을 물어보고 정답을 맞출 것.. 2022. 9. 14.
LV2 C++ 인라인(Inline) 함수 [lv2/C++] 인라인(Inline) 함수 인라인 함수란 정의된 함수들이 호출한 부분에 삽입되어 실행될 수 있도록 하는 함수이다. 일반적으로 정의된 함수는 호출되면 호출한 부분의 주소를 가지고 있다가 함수처리가 완료되면 기억했던 주소로 되돌아가는 과정을 거치지만 인라인 함수는 컴파일 하면서 호출 부분에 직접적으로 삽입되어 실행되기 때문에 실행속도가 빨라진다는 장점이 있다. 하지만 최신 컴파일러는 인라인 함수를 사용하겠다고 명시하지 않아도 적절하다고 생각되면 호출 부분에 자동으로 삽입하기도 하며 인라인 함수를 사용하겠다 해도 적절하지 않다고 생각되면 삽입하지 않아서 지금은 직접적으로 사용하는 경우는 드물다. 다음은 인라인 함수가 어떻게 변하게 되는지 컴파일 전 후 과정을 예시로 든 코드이다.// 인라인 .. 2022. 9. 13.
LV2 C++ 재귀(recursion) 호출 [lv2/C++] 재귀(recursion) 호출 재귀를 사전에서 찾아보면 어떠한 것을 정의할 때 자기 자신을 참조하는 것이라고 나온다. 함수를 사용하다 보면 자기 자신을 호출해야 더 수월한 경우가 있다. 대부분의 프로그래밍 책을 보면 재귀 호출을 설명할 때 팩토리얼(Factorial)을 예시로 들곤 한다. 재귀호출을 사용하지 않았을 경우와 함께 비교해 보자. 반복문 사용#include using namespace std;int main(){ int n, result = 1; cin >> n; for (int i = n; i > 0; i--) { result *= i; } cout 재귀 호출 사용#include using namespace std;int Factorial(int n);int main(){.. 2022. 9. 13.
LV2 C++ 값에 의한 호출(Call by Value)과 참조에 의한 호출(Call by Reference) [lv2/C++] 값에 의한 호출(Call by Value)과 참조에 의한 호출(Call by Reference) 일반적으로 함수에 값만 전달하는 경우가 있는 반면에 값을 다시 가져와서 사용해야 하는 경우가 있다. 계산되는 결과를 가져오는 경우 함수의 반환값을 이용할 수 있지만 반환값은 한 형태의 값만 반환할 수 있기 때문에 여러 개의 값을 동시에 사용하는 경우 이용하기 힘들다. 여기서 값만 전달 하는 경우를 값에 의한 호출 (Call by Value)이라고 하고 매개변수의 주소값을 이용해서 전달하는 경우를 참조에 의한 호출(Call by Reference)이라고 한다. 두개의 값을 바꾸는 프로그램을 통해 비교해 보도록 하자. 값에 의한 호출 (Call by Value)#include using name.. 2022. 9. 13.
LV2 C++ 함수(function) 사용 기초 [lv2/C++] 함수(function) 사용 기초 함수(function)란 특정한 작업을 수행하는 독립적인 코드의 집합이라 말 할 수 있다. 함수는 반복되는 기능을 하나로 묶어 프로그램을 모듈화 시킬 수 있고 함수 단위로 프로그램 작성 시 전체 프로그램을 논리적으로 구조화 시킬 수 있다는 장점이 있다.  함수의 기본적인 구조는 아래와 같다. 함수는 필요에 따라 호출하여 사용할 수 있는데 함수 내에서 처리한 결과를 호출한 부분에 돌려줄 수 있다. 이 때 반환되는 자료형에 따라 정수, 실수, 문자열 등을 반환 받거나 void로 선언하여 반환하지 않도록 설정할 수 있다. 인자의 목록에 넘기고 싶은 값이나 변수를 적어 함수의 블록안에서 사용할 수 있다. 간단한 프로그램으로 함수를 사용해보자.#include u.. 2022. 9. 13.
반응형