プロジェクト実践
実践的なC++プロジェクト構築.
プロジェクト構成
project/
├── src/
│ ├── main.cpp
│ ├── utils.hpp
│ └── utils.cpp
├── include/
│ └── utils.hpp
├── CMakeLists.txt
└── README.md
実装例:電卓アプリ
// utils.hpp
#pragma once
#include <string>
class Calculator {
public:
double calculate(const std::string& expression);
private:
double parseExpression(const std::string& expr);
};
// utils.cpp
#include "utils.hpp"
#include <iostream>
double Calculator::calculate(const std::string& expression) {
return parseExpression(expression);
}
double Calculator::parseExpression(const std::string& expr) {
return 0.0; // 簡略版
}
// main.cpp
#include "utils.hpp"
#include <iostream>
int main() {
Calculator calc;
std::string expr = "5 + 3";
std::cout << calc.calculate(expr) << std::endl;
return 0;
}
CMakeLists.txt サンプル
cmake_minimum_required(VERSION 3.10)
project(Calculator)
set(CMAKE_CXX_STANDARD 17)
add_executable(calc
src/main.cpp
src/utils.cpp
)
target_include_directories(calc PRIVATE include)
コンパイル:
mkdir build && cd build && cmake .. && make
テスト駆動開発
#include <iostream>
#include <cassert>
int add(int a, int b) { return a + b; }
bool isEven(int n) { return n % 2 == 0; }
void runTests() {
// テスト1
assert(add(2, 3) == 5);
// テスト2
assert(isEven(4) == true);
assert(isEven(3) == false);
std::cout << "全てのテストが成功" << std::endl;
}
int main() {
runTests();
return 0;
}
全てのテストが成功
ポイント
- 適切なプロジェクト構成
- CMake で構築自動化
- テスト駆動開発