최근에 STM32F103 마이크로 컨트롤러 용 C++ 학습을 시작했고 STM32plus라는 라이브러리를 사용하고 있습니다. 문제는 C++과 포인터에 전혀 익숙하지 않은 점이며이 라이브러리는 사실상이 라이브러리에 의존합니다.클래스 포인터로 프로젝트 분할하기
그래서 현재 모든 코드가있는 소스 파일이 하나 있는데,이를 섹션으로 분할하려고합니다. 내 주요 소스 파일의 상단에,이 같은 선언이 있습니다
#include "config/stm32plus.h"
#include "config/display/tft.h"
using namespace stm32plus;
using namespace stm32plus::display;
typedef Fsmc16BitAccessMode<FsmcBank1NorSram1> LcdAccessMode;
typedef SSD1289_Landscape_64K<LcdAccessMode> LcdPanel;
LcdAccessMode *_accessMode;
LcdPanel *dsp;
Font *font;
이 더 많은,하지만 그것은 (SD 카드 및 기타 구성 요소에 대한 더있다,이 섹션이 표시입니다) 그런 일을 보인다. 나는 여기서 무슨 일이 벌어지고 있는지 대부분 잘 알고있다. 이 파일 내 기능 중 하나는 다음과 같습니다
template <class T>
void print(T text)
{
textx+=dsp->measureString(text);
*dsp<<Point(textx,texty)<<text;
}
void println()
{
textx=0;
texty+=font->getHeight()+1;
}
template <class T>
void println(T text)
{
print(text);
println();
}
을 지금, 나는 시도하고 별도의 파일 또는 클래스 (Print.cpp 및 Print.h)로이 이동하고 싶어하지만, 다른 모든 종류의 시도 후 모든 라이브러리, forward 선언문을 포함하는 extern 클래스와 같은 것들, 그리고 내가 그 코드를 컴파일하려고 시도하고있는 10 가지의 다른 에러에 대한 검색을 수행 한 후에, 나는 무엇을 하려는지 인터넷 검색을 통해 간단히 찾을 수 없습니다. 나는 내가 시도한 것에 대한 예제를 게시 하겠지만 이전의 모든 시도는 삭제했으며 어쨌든 전혀 작동하지 않았다.
그래서, 주 프로그램이 디스플레이 기능을 사용하도록 허용하면서 주 프로그램에서 사용할 수 있도록 이러한 기능을 별도의 파일/클래스에 넣는 방법에 대한 예제를 제공 할 수 있습니까?
도움/조언을 보내 주시면 감사하겠습니다. 상기
: 나는 C++ 여전히 새로운 해요, 이것은 임베디드 시스템, 그래서 RAM이 제한되는 템플릿 기능에 대한
템플릿 클래스의 정의는 인스턴스화 된 곳에서 확인해야합니다. 그것들을 별도의 편집 단위로 옮길 수는 없습니다. –
@ g-makulik 그게 무슨 뜻인지는 모르겠지만 'typedef'라인을 언급하고있는 것 같습니다. 나는 그것을 할 수있는 방법이 있다고 확신한다. 저자는 "LcdManager"와 "ImageTransitionAnimator"와 같은 여러 파일을 가진 정말 복잡한 응용 프로그램을 만들었다. 어떻게 완료되는지 보겠지 만, 코드가 너무 복잡하고 따라하기가 복잡합니다. 템플릿 클래스를 모든 클래스에서 사용할 수 없게 만들 수있는 방법이 있습니까? –