문제점 : 내 시스템에는 많은 통계 계산기가 클래스로 포장되어 있습니다. 제 계산은이 계산기의 값을 '합계'라는 단일 값으로 결합하는 것입니다. 이 계산기는 테이블로 주어 결합하는 방법을 설명합니다메타 프로그래밍을 사용하여 코드를 생성하는 방법은 무엇입니까?
'모델'--- CSV 파일이나 MySQL은 테이블
instance_name,accessor,argument,post_processing_function_name
fleet_statistics,getCash,2017,func1
city_statistics,getPopulation,2016,func2
....
....
내 현재 솔루션 중 하나 : 나는에 파이썬 스크립트를 작성 CSV 파일을 읽고이 같은 C++ 코드를 생성 : 코드를 생성하기 위해 파이썬을 사용하여
double computeTotal()
{
double total = 0;
total += func1(fleet_statistics->getCash(2017));
total += func2(city_statistics->getPopulation(2016));
....
....
}
매우 편리하지만, 문제는 더 이상 '순수'C++ 프로그램입니다 없다는 것이다. 생성 된 C++ 파일이 최신인지 확인하기 위해 makefile을 해킹해야합니다.
더 우아한 해결책은 메타 프로그래밍을 사용하여 파이썬이 아닌 C++를 사용하여 C++로 코드를 생성하는 것입니다. 누구든지이 일을하는 방법을 보여줄 수 있습니까?
CSV 파일로 어떤 비즈니스 로직 관련-스크립트 생성됩니다
돌출 몇 점을 언급합니다. 그것에는 수천 개의 행이 있습니다. 수동으로 C++ 코드를 작성하는 것은 불가능합니다.
새 릴리스를 만들 때마다 CSV 파일이 바뀔 수 있습니다.
예를 들어 CSV 형식을 사용합니다. MySQL을 사용하면 테이블을 쉽게 만들 수 있습니다.
instance_name 열의 객체가 반드시 동일한 BaseClass의 객체 일 필요는 없습니다. 접근 자의 함수 시그니처도 변형입니다. 따라서 함수 포인터를 사용하는 것이 편리하지 않습니다.
고마워요!
입력 된 CSV 형식을 변경할 수 있습니까? – Angew
@Angew 변경할 수 있습니다. 예를 들어 CSV 만 사용합니다. – user152503
XY 문제와 같은 느낌입니다. 메타 프로그래밍이 정말로 필요한가요? 왜 일부 함수 포인터를 가진 C++ 데이터 구조를 정의하지 않습니까? 또는 직접 코드를 작성하지 않는 이유는 무엇입니까? 정말로 문제가 무엇인지 말하는 대신 제안 된 솔루션에 대해 질문합니다. –