C++/ Dzielenie programu na pliki

0

Witam, mam pytanie odnośnie programu szyfrującego.
Chciałam w pliku nagłówkowym zrobić możliwość wyboru, które szyfrowanie ma być użyte z trzech możliwości ( każde szyfrowanie będzie w osobnym pliku źródłowym), ale nie wiem czy mogę. Jeśli nie, to jak mam tą kwestię rozwiązać?
Dziękuję za pomoc.

1

A dlaczego w pliku nagłówkowym? Dlaczego zwykły if nie wystarcza?

void szyfrujA() {}
void szyfrujB() {}
void szyfrujC() {}
void szyfruj(int metoda)   // enum byłby czytelniejszy
{
    if (metoda == 0) 
        szyfrujA();
    else if (metoda == 1) 
        szyfrujB();
    else 
        szyfrujC();
}
0

Ponieważ jest to na projekt zaliczeniowy i muszę mieć podział na pliki, nie mogę zrobić w jednym niestety. A, że pierwszy raz dziele program na pliki, to jestem trochę zielona.

1

szyfujA.h

void szyfrujA();

szyfrujB.h

void szyfrujB();

szyfrujC.h

void szyfrujC();

szyfruj.h

#include "szyfrujA.h"
#include "szyfrujB.h"
#include "szyfrujC.h"
// powyższe include'y nie są stricte konieczne, ale dla późniejszej wygody
void szyfruj(int metoda);

szyfrujA.cpp

#include "szyfrujA.h"
void szyfrujA()
{
    ...
}

analogicznie dla B i C

szyfruj.cpp

#include "szyfruj.h"
void szyfruj(int metoda)
{
    ...
}
4
//szyfrujA.h
void szyfrujA();
//szyfrujA.cpp
void szyfrujA() { ... }
//szyfrujB.h
void szyfrujB();
//szyfrujB.cpp
void szyfrujB() { ... }
//szyfrujC.h
void szyfrujC();
//szyfrujC.cpp
void szyfrujC() { ... }
//szyfruj.h
#include "szyfrujA.h"
#include "szyfrujB.h"
#include "szyfrujC.h"

void szyfruj(int metoda);
typedef void SZYFRUJ();
//szyfruj.cpp
#include "szyfruj.h"
struct { SZYFRUJ *szyfruj; } metody[] = { {&szyfrujA},{&szyfrujB},{&szyfrujC} };

void szyfruj(int metoda) { metody[metoda].szyfruj(); }
0

Dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1