Among Us - Crewmates
 

[vscode][c++] 'non-aggregate type' 오류 해결방안

728x90

애플 실리콘 맥에서 c++ 코딩공부를 하고자 vscode를 이용하는데,

설정해주어야 하는 부분도 많고, 생각보다 번거로웠다.

 

그러다 갑자기 등장한 에러가 나의 발을 붙잡을 줄이야....🤯 🤯

 

error: non-aggregate type 'vector<std::string>' (aka 'vector<basic_string<char, char_traits<char>, allocator<char> > >') cannot be initialized with an initializer list

 

우선 내가 작성한 코드는 아무 문제가 없는 간단한 벡터 선언문이였다.

int main() {
    vector<string> part = {"leo", "kiki", "eden"};
    vector<string> comp = {"eden", "kiki"};
    cout << solution(part, comp) << endl;
    return 0;
}

 

이 부분을 해결하려고 정말 많은 시도를 했고, 결국에는 해결을 했다.

 

VSCode에서 Code Runner를 사용하여 컴파일 할 때

C ++ 11 Warning이 나오거나 C ++ 17 이후의 기능이 인식되지 않아서 생기는 컴파일 오류인 듯 하다.

 

나처럼 고생하지 않기를 바라는 마음에 포스팅을 작성한다.

 


해결방안

1) Extension : Code Runner 설치

우선, Code Runner가 없다면 설치를 해주도록 하자.

 

2) settings.json 에 코드 추가

 

command + shift + P  클릭 후

Preferences: Open Workspace Settings (JSON) 를 클릭하면 settings.json 파일을 열 수 있다.

command + shift + P 눌렀을 때
settings.json

"code-runner.executorMap": {"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"}

"code-runner.executorMap": {"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"}

 

settings.json 코드에 위의 코드를 추가한다.

 

에러가 사라지고 정상적으로 작동될 것이다.

혹시, 해결되지 않는다면 vscode를 껐다가 다시 실행해보도록 한다!

728x90
반응형