Я изучаю 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 ++.До сих пор я не смог найти ни одного подобного вопроса.
Самая близкая вещь, с которой я столкнулся, использует указатели, чтобы сделать что-то похожее на то, что я хочу сделать, но книга, которую я использую, еще не дошла до указателей, и я хочу попытаться выяснитьспособ сделать это, не выходя за рамки главы, в которой я работаю (т.е. не используя указатели).
Я не включил файл заголовка или файл реализации класса, потому что я не думаю, что ониАктуально здесь.
Заранее спасибо!