#include <iostream>
#include <type_traits>
#include <vector>
#include <string>
#include <functional>
#include <map>
#include <algorithm>
#include <sstream>
#include <set>
#include <unordered_map>
int main()
{
}
#pragma once
#include "config_file.h"
#include "i_class_with_config.h"
class ClassWithConfig : public I_ClassWithConfig
{
// specific implem
};
#pragma once
struct A {
bool A1;
bool A2;
};
struct B {
bool B1;
bool B2;
};
struct C {
A a;
B b;
};
#pragma once
struct B; // forward declaration of struct B
class I_ClassWithConfig
{
// definition of interface
};
#pragma once
#include "i_class_with_config.h"
class SideClass
{
public :
SideClass(B* config);
private :
void Foo(void);
B* my_config;
};
#include "side_class.h"
#include "config_file.h"
SideClass::SideClass(B* argConfig) : my_config(argConfig)
{
}
void SideClass::Foo(void)
{
if (my_config->B1 == true)
{
// do something
}
}