Я пишу класс, который читает данные из файла. Проект все еще находится в разработке, и, вероятно, я изменю имя файла или путь позже, поэтому я сохранил его в std::string для более быстрого редактирования.
Учитывая, что имя файла будет использоваться несколько раз в функции, но будет использоваться только в функции один, существует ли каноническое правило cpp о том, где я должен определять переменную?
//don't know where I'll define this
std::string file_name = "path/to/file.foo";
//a.h file
class A {
public:
void fileFunc();
private:
//do i define it here?
};
//a.cpp file
A::fileFunc() {
//or do i define it here?
std::ifstream in(file_name);
if (in) {
//do things
}
else {
std::cerr << "couldn't open " << file_name;
}
}





Хранит всю информацию рядом с их использованием.
Это поможет удобочитаемости и производительности. См.: https://en.wikipedia.org/wiki/Locality_of_reference
Так
A::fileFunc() {
const std::string file_name = "path/to/file.foo"; // pls use const when you can
...
или
A::fileFunc(const std::string& file_name) {
...
Кстати, я думаю, что это должно быть на https://codereview.stackexchange.com/, а не на stackoverflow.
Почему бы не позволить функции иметь параметр?