Не очень понимаю, что я делаю не так. Программа просто завершается (с кодом 0) и ничего не выводит.
struct Date {
int day;
int month;
int year;
char *toString() {
char *out = nullptr;
sprintf(out, "%d-%d-%d", day, month, year);
return out;
}
Date(int day, int month, int year) {
this->day = day;
this->month = month;
this->year = year;
}
};
int main() {
Date *date = new Date(25, 11, 17);
printf("%s", (*date).toString());
}
Ну кто же пишет по нулевому адресу?
char *out = nullptr;
sprintf(out, "%d-%d-%d", day, month, year);
Сделайте, например, так:
struct Date {
int day;
int month;
int year;
char buf[20];
char *toString()
{
sprintf(buf, "%d-%d-%d", day, month, year);
return buf;
}
и в конструкторе еще сразу же вызов toString() или buf[0]=0;.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей