Печать строки с классом в C ++?

0
#ifndef DATE_H
#define DATE_H

#include <iostream>
#include <iomanip>
using namespace std;

class Date{
private:
    unsigned int day;
    unsigned int month;
    string monthName;
    unsigned int year;
public:
    Date();
    void printNumeric() const;
    void printAlpha() const;
};
#endif

Мой заголовочный файл

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


Date::Date(){
    month = 1;
    monthName = "January";
    day = 1;
    year = 1970;
}

void Date::printNumeric() const{
    cout << month << "/" << day << "/" << year;
}

void Date::printAlpha() const{
    cout << Date::monthName << " " << day << ", " << year;
}

и фактический код. Моя функция printNumeric работает нормально в соответствии с тестовым стендом, но моя printalpha не создает имя месяца строки. Должен ли я что-то делать с monthName, чтобы он вводил пользовательский ввод для имени месяца?

  • 0
    Ваш код выглядит хорошо, вам не нужно использовать Date::monthName , просто monthName будет в порядке
  • 1
    Вы должны использовать cout << monthName << " " << day << ", " << year; вместо этого (без Date:: префикс).
Показать ещё 9 комментариев
Теги:

2 ответа

3

Удалить дату :: и она должна работать

  • 2
    а: где? б: почему? c: что вы ожидаете там с "Date ::"?
  • 0
    Испытательный стенд говорит, что мой monthName ничего не производит, поэтому я подумал, что мне следует напрямую использовать Date ::, чтобы посмотреть, будет ли оно генерировать строковое имя в течение месяца.
0

Использование Date :: будет таким же, как использование этой или только переменной-члена, если вы находитесь в пределах класса.

но вам лучше использовать

cout << this->monthName << " " << day << ", " << year;

или

cout << monthName << " " << day << ", " << year;

Использовать Date:: когда у вас есть статический метод для вызова или публичный член для инициализации вне области класса, например.

кстати, на всякий случай, если у вас есть другой язык, строка является частью iostream. Таким образом, не используйте using namespace std; но std::cout вы тогда поймете это, когда компилятор произведет ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню