C++

    [Error Fix] invalid new-expression of abstract class type (feat. 추상 클래스)

    문제 상황 invalid new-expression of abstract class type Because the following virtual functions are pure within 위와 같은 문제 발생 해결 방안 순수 가상 함수로 이루어진 추상클래스를 상속한 클래스가 일부 함수를 override하지 않아서 발생한 문제. 이를 해결하기 위해서는? i) 추상클래스에 정의된 멤버함수를 상속한 클래스에서 모두 override 해주거나, ii) 순수 가상함수로 정의된 함수를 가상함수로 바꾸기

    [C++] 병행 컴퓨팅: 순차, 병렬, 병행의 차이

    순차(sequential) / 병렬(parallel) / 병행(concurrent) 순차 처리 (sequential): 복수의 업무를 순서대로 하나씩 처리. 병렬 처리 (parallel): 복수의 업무를 "동시에" 처리. 병행 처리 (concurrent): 병렬에 비해 추상도가 높은 표현. 한 개의 업무를 어떠한 순서로 처리하든 상관 없는 여러 개의 작업으로 분할하여 처리. 멀티쓰레드 프로그램의 경우 병행 처리를 의미하며, 작업자가 한 명이라면 분할된 작업들을 순차적으로 처리하게 되지만, 두 명이라면 같은 작업을 병렬적으로 처리할 수 있다. 멀티쓰레드 프로그램 만약 CPU가 한 개 뿐이라면 병행처리를 순차적으로 실행할 테고, CPU가 여러개라면 병행처리를 병렬적으로 실행할 수 있다. 만약 CPU가 한 개..

    [CMake] CMake 소개 및 필요성: Modern CMake 3.23+

    💡 본 문서는 'CMake 소개 및 필요성'에 대해 정리해놓은 글입니다. C/C++ 프로젝트의 빌드를 용이하게 해주는 CMake에 대한 간략한 소개 및 관련 자료들을 정리하였으니 참고하시기 바랍니다. 1. CMake 란? Make의 빌드관리시스템을 만들기 위한 오픈소스 프로젝트(Make 이외의 .ninja와 같은 빌드 파일도 만들 수 있음). 스스로 기존의 Make의 과정을 수행하지는 않고 지정한 운영 체제에 맞는 Make 파일의 생성 및 관리만을 수행하기 때문에 Meta Make라고도 불리우는 빌드 자동화 시스템. 한번 작성해 두면 유닉스 계열은 물론, 마이크로소프트 window 계열의 프로그래밍 도구도 지원. 2. 왜 CMake를 사용하는 걸까? You want to avoid hard-coding ..

    [C++] C++ 빌드 시스템(툴)에는 뭐가 있을까?

    본 문서는 C++을 위한 빌드시스템을 비교한 문서로 다음의 feature를 기준으로 비교 작성한다. 1. C++11 support 2. Cross platform (Linux as main target, but able to build on at least Windows as well) 3. Decent unit testing support 4. Support for multiple modules for separating code out 5. Support for code generation (Using asn1c or protobuf - not 100% sure yet) 6. Easy to maintain 참고 An overview of build systems (mostly for C++ proje..