개발/C++

개발/C++

[Design Pattern] Strategy Pattern(전략 패턴) 정리

Strategy Pattern의 정의 Strategy Pattern(전략 패턴)은 특정 클래스의 행위를 변경하고 싶을 때 사용하는 디자인 패턴 알고리즘을 객체의 형태로 캡슐화하여, 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있음 동일한 문제를 해결할 수 있는 여러 알고리즘을 정의하고, 런타임에 알고리즘을 선택할 수 있도록 하는 방식 개념 Context(문맥): 전략을 사용하는 역할 / 필요에 따라 다른 전략을 사용하도록 설정할 수 있음 Strategy(전략): 여러 알고리즘을 인터페이스로 정의 / Context에서 사용할 수 있는 메소드 또는 알고리즘 제공 ConcreteStrategy(구체적인 전략): Strategy 인터페이스를 실제로 구현하는 클래스 / 각기 다른 알고리즘을 구..

개발/C++

c++에서 http호출을 쉽게해보자! cpp-httplib 연동하기

Introduction c++ 환경에서는 lib-curl과 같은 무거운 라이브러리를 붙이기가 꽤나 까다롭다. 가볍게 http호출을 위한 헤더온리 라이브러리를 찾는다면 cpp-httplib가 좋은 선택이될 수 있다. cpp-httplib는 단일 헤더 파일로 제공되어 프로젝트에 통합하기 쉽다. 하지만 주의해야 할 점이 있는데, cpp-httplib는 C++11 이상을 지원하는 컴파일러가 필요하다는 것이다. Install cpp-httplib는 단일 헤더 라이브러리로, Github에서 직접 다운로드하고 프로젝트에 포함시키는 것이 일반적으로, 이렇게 하면 별도의 라이브러리 설치 과정이 필요 없다. 1. 다음 링크로 이동: https://github.com/yhirose/cpp-httplib 2. 'Code' 버..

개발/C++

3. c# string을 c++ DLL로 전달하는 방법

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 2023.01.31 - [개발/C++] - 2. C++ DLL을 C#에서 이용하기 방법1. std::wstring 사용 C++ DLL 코드 #include extern "C" __declspec(dllexport) void FunctionName(const std::wstring& inputString) { std::wcout

개발/C++

2. C++ DLL을 C#에서 이용하기

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 1. C++ DLL을 C#에서 사용하는 간단한 예제 C++ DLL(CPP.dll) #include extern "C" __declspec(dllexport) int AddNumbers(int a, int b) { return a + b; } C# using System; using System.Runtime.InteropServices;//import하지 않으면 DLLImport 사용 불가! namespace CSharpApp { class Program { [DllImport("CPP.dll")] public static extern int AddNumbers(int a, int b); static v..

개발/C++

1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기

방법 1 : 프로젝트 세팅부터 DLL로 선택해서 빌드하기 Visual Studio 2019에서 새 프로젝트를 생성 "Win32 Console Application" 프로젝트 템플릿을 선택 "Application Settings" 단계에서 "DLL"을 선택 프로젝트 속성에서 "C/C++" > "Code Generation" > "Runtime Library"를 "Multi-threaded DLL (/MD)"로 설정 프로젝트에 필요한 함수를 작성 "Build" > "Build Solution"을 선택하여 프로젝트를 빌드 빌드 결과인 dll 파일은 프로젝트 폴더의 "Debug" 또는 "Release" 폴더에 생성되는 것 확인 방법 2 : 이미 개발한 프로젝트를 DLL로 선택해서 빌드하기 프로젝트 속성 -> 일..

개발/C++

C++ 람다 함수 정리

❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. 개요 C++의 lambda는 익명 함수를 생성하는 방법 중 하나입니다. lambda 표현식은 함수의 헤더와 바디를 한 줄에 작성할 수 있어 간결한 코드를 작성할 수 있습니다. lambda 표현식은 기본 형식이 ->리턴타입 {함수 본문} 입니다. 이때, 인자리스트나 리턴타입은 생략 가능합니다. C++의 lambda 함수의 []는 capture list라고 불리며, 함수 바디 내부에서 참조할 수 있는 외부 변수를 정의합니다. [] : 아무런 변수도 캡처하지 않습니다. [x, &y]: x라는 이름의 변수를 값으로 캡처하고 y라는 이름의 변수를 참조로 캡처합니다. [&] : 외부 모든 변수를 참조로 캡처합니다. [=]: 외부 모든 변수를 값으로 캡처합니다..

개발/C++

C++20 신규 기능 정리

❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. C++ 20은 여러 가지 새로운 기능을 추가하였습니다. 그 중에서는 다음과 같은 기능들이 있습니다: Concepts: 템플릿 인수의 유효성을 컴파일 타임에 검사할 수 있는 기능. Concepts는 템플릿 함수나 템플릿 클래스의 인수들이 원하는 조건(concept)을 만족하는지 컴파일 타임에 검사할 수 있는 기능입니다. 이를 통해서 템플릿 함수나 클래스를 사용할 때 오류를 최대한 빨리 확인 할 수 있게 됩니다. 예를 들어, 아래의 함수 add()는 두 개의 값을 더하는 함수 입니다. template auto add(T a, U b) { return a + b; } 이 함수를 사용할 때 T, U 타입은 어떤 타입이든 가능하지만, 타입 T는 덧셈 연산이..

개발/C++

Boost Geometry 자주 사용하는 함수 정리 1편

boost::geometry::within 입력한 두 geometry의 포함 여부를 계산하는 함수 geometry1이 geometry2에 포함되는지 검사 return boolean template bool within(Geometry1 const & geometry1, Geometry2 const & geometry2) point_t point1; boost::geometry::model::polygon poly1; const auto& _isWithIn = boost::geometry::within(point1, poly1); ----> ok const auto& _isWithIn = boost::geometry::within(poly1, point1); ----> fail boost::geometry..

njsung
'개발/C++' 카테고리의 글 목록