Как исправить ошибку «Недопустимые операнды в бинарном выражении» в C ++

Это значение с компьютера пользователя, и его можно изменить в любое время, поэтому я думаю, что это не имеет значения, я просто хочу получить приблизительное значение и затем преобразовать его в GMT на моем сервере.

Например, я из Тайваня, и он возвращает «+8» для меня.

Рабочий пример

JS

function timezone() {
    var offset = new Date().getTimezoneOffset();
    var minutes = Math.abs(offset);
    var hours = Math.floor(minutes / 60);
    var prefix = offset < 0 ? "+" : "-";
    return prefix+hours;
}


$('#result').html(timezone());

HTML

Результат

+8

0
задан Squeaker Rules 28 March 2019 в 14:49
поделиться

2 ответа

Попробуйте перегрузить < < оператор в Челтуиели:

    friend ostream& operator<<(ostream& os, const Cheltuieli& x)
    {
        os << x.name;
        return os;
    }
0
ответ дан Theodor Badea 28 March 2019 в 14:49
поделиться

Из того, что я могу сказать, класс Cheltuieli реализует очень маленькое подмножество того, что уже сделано в классе std::string - но это неполно, так что если вы сделаете:

Cheltuieli orig("something");
Cheltuieli cpy = orig;

оба orig и cpy будут иметь член name, указывающий на один и тот же адрес из-за конструктора копирования по умолчанию. Читайте о Правило три / пять / ноль .

Точно так же класс Repo, кажется, реализует что-то близкое к std::vector. Я предлагаю вам не начинать возиться с необработанными указателями, а использовать для этого стандартные классы. Вы могли бы даже сделать псевдонимы для них:

using Cheltuieli = std::string;
using Repo = std::vector<Cheltuieli>;

Используется так:

Cheltuieli a = "pizza";
Repo n;
n.push_back(a);
n.push_back(a);

for(auto& cheltuieli : n) {
    std::cout << cheltuieli << "\n";
}
0
ответ дан Ted Lyngmo 28 March 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: