Создавать объекты в условных операторах c ++

Я изучаю c ++, и я только что попал в объектно-ориентированную главу. У меня есть вопрос о создании объектов внутри операторов if.

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

Проблема, в частности, гласит: «Двухпараметрический конструктор по умолчанию должен позволять указывать эти [названия компаний и отчетов] во время создания нового объекта отчета. Если пользователь создает объект отчета без передачи каких-либо аргументов, используйте значение по умолчанию значения. В противном случае используйте указанные пользователем значения для имен. "

Итак, мой вопрос, как создать эти объекты? Я понимаю, как создать объект без каких-либо аргументов (т. Е. Report newobj;), а также с аргументами (т. Е. Report newobj (string string);). По сути, я понимаю, как создать эти объекты в начале моей основной функции. Но возможно ли создать их внутри, если утверждения основаны на выборе пользователя? Вот что у меня есть, и, очевидно, это не работает:

#include <iostream>
#include <string>
#include "report.h"
using namespace std;

bool enter_company_name();           // return true if user wants to enter company name
bool print_form();              // return true if user wants to print in formatted output

int main()
{
  string company_name,
    report_name;
  bool name = false,
    format = false;

  name = enter_company_name();
  format = print_form();

  if (name)
    {
      cout << "Enter company name: ";
      getline(cin, company_name);
      cout << "Enter report name: ";
      getline(cin, report_name);
      Report header(company_name, report_name);  // THIS IS MY PROBLEM
    }
  else
      Report header;  // THIS IS MY PROBLEM

  if (format)
    header.print_formatted();
  else
    header.print_one_line();

  return 0;
}

bool enter_company_name()
{
  char choice;

  cout << "Do you want to enter a name?\n>";
  cin >> choice;

  if (choice == 'y' || choice == 'Y')
    return true;
  else
    return false;
}

bool print_form()
{
  char choice;

  cout << "Do you want to print a formatted header?\n>";
  cin >> choice;

  if (choice == 'y' || choice == 'Y')
    return true;
  else
    return false;
}

Поэтому я хочу создать объект, используя значения по умолчанию, если ни один из них не указан, или создать объект с пользовательскими значениями, если этот выбор предоставлен. Я просто не могу понять, как сделать это интерактивно в C ++. До сих пор я не смог найти ни одного подобного вопроса.

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

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

Заранее спасибо!

Ответы на вопрос(6)

Ваш ответ на вопрос