Инициализация переменных в C ++ - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу инициализировать множество переменных (в основном, двойных и целых чисел, но также и некоторые векторы), которые затем будут переданы множеству функций. Каков наилучший способ их инициализации?

Я мог бы инициализировать их все в основной функции, это просто немного беспорядочно, и в идеале я хотел создать отдельную функцию для их инициализации. Я хочу попробоватьи держите основную функцию как можно более пустой. Однако у меня возникает проблема с невозможностью вернуть их.

Есть ли правильный способ сделать это? Я слышал о конструкторах, но я не совсем уверен, для чего они используются, и нужно ли мне смотреть на это здесь или нет.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2019

1) вы можете использовать функцию, передать переменную по ссылке для инициализации, чтобы поддерживать основную функцию в чистоте.

2) вы можете использовать шаблоны , как упомянуто в этом видео .

См. Код .

0 голосов
/ 05 ноября 2019

Исходя из ваших требований, я бы использовал структуры со значениями по умолчанию:

struct MyConfiguration {
    double someValue{ 5. };
    int someOtherValue{ 3 };
};

int main( int, char ** ) {
    const MyConfiguration c;

    f( c.someValue );
    g( c.someValue, c.someOtherValue );
}

Для многих типов приложений было бы разумно прочитать эти значения из файла конфигурации.

0 голосов
/ 04 ноября 2019

Я думаю, что вам нужно именно то, для чего нужны объектно-ориентированные языки.

class A
{
     private:
         int a;
         int b;
         ....
     public:
         foo();
         bar();
         ...

};

Я рекомендую вам прочитать некоторые книги, такие как принципы программирования и практики с использованием c ++ от самого Бьярна Страуструпа

Конечно, этот пример простоиллюстрация понятия классов (код даже не правильный, но здесь это не важно). Прочитайте некоторые статьи или книги о принципах ОО, а затем попробуйте разработать архитектуру, отвечающую вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...