Я довольно новичок в C ++, поэтому извините за любые вопиющие ошибки.
Постановка задачи
Мой код предназначен для математических вычислений, поэтому main.cpp / main.h выполняет настройку, считывает параметры и т. д., а затем выполняет отдельный файл / заголовок, который называется driver.cpp / driver.h, выполняет вычисления.
Чтобы инкапсулировать параметры, я создаю несколько пользовательских типов данных, инициализирую их в main.cpp и передаю их функции, определенной в driver.cpp.Я хотел бы, чтобы эти параметры рассматривались как константы для функций в driver.cpp, и я также хотел бы присвоить им псевдонимы для удобства чтения.Было бы неплохо присвоить им псевдоним один раз вместо каждой функции.Возможно ли это?
Я попытался сделать простой пример, который иллюстрирует , что я хочу , даже если он не будет работать, потому что вы не можете использовать постоянные ссылки, как яниже.
Идея того, что я хочу:
main.cpp
struct myStruct_t{
int a,b,c;
};
int main(int argc,char **argv){
myStruct_t myStruct;
myStruct.a=1;
myStruct.b=2;
myStruct.c=3;
driver(myStruct);
}
driver.cpp
const int &a,&b,&c;
void func1();
void func2();
driver(const myStruct_t& myStruct){
a = myStruct.a;
b = myStruct.b;
c = myStruct.c;
func1();
func2();
}
void func1(){
// do stuff with a,b,c
}
void func2(){
// do stuff with a,b,c
}
С другой стороны, он будет работать для реализации драйвера следующим образом.Мне это не очень нравится, потому что мне нужно будет копировать объявление ссылки в каждой функции.
Что работает, но мне не очень нравится:
alt_driver.cpp
void func1(const myStruct_t& myStruct);
void func2(const myStruct_t& myStruct);
driver(const myStruct_t& myStruct){
func1(myStruct);
func2(myStruct);
}
void func1(const myStruct_t& myStruct){
const int& a = myStruct.a;
const int& b = myStruct.b;
const int& c = myStruct.c;
// do stuff with a,b,c
}
void func2(const myStruct_t& myStruct){
const int& a = myStruct.a;
const int& b = myStruct.b;
const int& c = myStruct.c;
// do stuff with a,b,c
}