TIL

[250130 TIL] SetTimer에 사용할 함수의 반환형은 void여야 함

yoosorang 2025. 1. 30. 21:14

1️⃣ 알고리즘 코드카타

https://school.programmers.co.kr/learn/courses/30/lessons/160586#
[ 대충 만든 자판 ]

🤖 AI 피드백

1. 원소 for문이 아닌 인덱스 for문 사용하면 코드 가독성을 높일 수 있음

2. ||를 사용하여 여러 상황에 대해 코드 실행 가능

3. string을 매개변수로 받을 경우 const &를 활용

#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

vector<int> solution(vector<string> keymap, vector<string> targets) {
    vector<int> answer;
    unordered_map<char, int> minKeyPress;

    // 각 문자별 최소 키 입력 횟수 저장
    for (const string& key : keymap) {
        for (int i = 0; i < key.size(); ++i) {
            if (minKeyPress.find(key[i]) == minKeyPress.end() || minKeyPress[key[i]] > i + 1) {
                minKeyPress[key[i]] = i + 1;
            }
        }
    }

    // 타겟 문자열에 대한 최소 키 입력 횟수 계산
    for (const string& target : targets) {
        int pushCount = 0;
        for (char c : target) {
            if (minKeyPress.find(c) == minKeyPress.end()) {
                pushCount = -1;
                break;
            }
            pushCount += minKeyPress[c];
        }
        answer.push_back(pushCount);
    }

    return answer;
}

 

2️⃣ 언리얼 C++ 공부

🔹전방선언

#include 밑에 전방선언을 적을 수 있지만 클래스 선언 앞에 적어줘도 됨

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	class UBoxComponent* SpawnVolume; //앞에 class 붙이면 전방선언이구나!​

 

🔹절댓값 함수

FMath::Abs()

if(FMath::Abs(GetOwner()->GetActorLocation().Y-StartLocation.Y) > MaxRange)
    MoveSpeed *= -1;
GetOwner()->AddActorWorldOffset(FVector(0, MoveSpeed, 0)*DeltaTime);

 

💥마주친 문제 : 구조체

▪️상황
struct를 작성한 cpp와 h에 문제가 될 부분이 없는데 구조체에 관한 에러 발생


▪️해결
구조체를 사용할 때 전방선언을 class로 해서 struct로 바꿔줌

 

💥마주친 문제 : SetTimer

▪️ 상황
SetTimer 함수시그니처대로 매개변수를 적어주었는데 에러 발생

 

▪️ 해결
SetTimer에서 사용 가능한 함수 포인터의 반환형은 void여야 함

 

💭회고
오늘도 여러 에러와 마주하였다.
하지만 콜리전 관련한 문제는 아직 해결하지 못했다.
일단 부모의 콜리전을 자식의 콜리전도 영향을 받는 것 같은데
block을 했는데도 block이 안 먹히니까 미칠 노릇이다..
해볼 수 있는데까지 해보다가 내일 튜터님께 여쭤봐야겠다🥲