У меня есть каталог, который выглядит следующим образом:
.
├── makefile
├── solution
│ ├── weather.cpp
│ └── weather.h
├── student
│ ├── weather.cpp
│ └── weather.h
└── tests
└── test_Weather_Weather.cpp
solution / weather.h
#ifndef _WEATHER_H_
#define _WEATHER_H_
#include <string>
using namespace std;
class Weather {
private:
int temp;
public:
Weather();
string announce();
};
#endif
solution / weather.cpp
#include <iostream>
#include "weather.h"
using namespace std;
Weather::Weather() {
temp = 0;
}
string Weather::announce() {
if (temp <= 0) {
return "It's freezing!";
} else {
return "It's hot!";
}
}
ЧтоЯ пытаюсь добиться того, чтобы я хотел скомпилировать и запустить test_Weather_Weather.cpp
, что уловит ошибку в конструкторе погоды по умолчанию в определении студента.Я хочу провести модульное тестирование этого конструктора (и, в конечном итоге, announce
), поэтому я хочу использовать символы solution
для всего , кроме конструктора student
.
Я хочу бытьв состоянии сделать это во время компиляции, то есть перед компиляцией, я хочу, чтобы оба файла student
и solution
source / header были абсолютно одинаковыми (за исключением различий в их определениях).
Я пытался получить егоработать с использованием флага g ++ -D, но я потерпел неудачу.