C++ 错误二进制表达式的无效操作数('ostream'(又名'basic_ostream<char>')和'const std::chrono::year_month_day')

问题描述 投票:0回答:1

你能帮我解决这个错误吗

二进制表达式的无效操作数('ostream'(又名'basic_ostream')和'const std::chrono::year_month_day')

我用以下命令编译源代码 CLion 2023.3.2 C++20 苹果硅M1 铿锵++版本 Apple clang 版本 15.0.0 (clang-1500.1.0.2.5) 目标:arm64-apple-darwin23.2.0 线程模型:posix

源代码

科隆纳.h

#ifndef SUPERE_COLONNA_H
#define SUPERE_COLONNA_H

#include <chrono>

namespace colonna {

    class Colonna {
    public:
        Colonna(const std::chrono::year_month_day &dataC);

        const std::chrono::year_month_day &getData() const;

        void setData(const std::chrono::year_month_day &dataC);

    private:
        // Data
        std::chrono::year_month_day dataC;
    };

} // colonna

#endif //SUPERE_COLONNA_H

科隆纳.cpp

#include "Colonna.h"

namespace colonna {

    Colonna::Colonna(const std::chrono::year_month_day &dataC) : dataC(dataC) {}

    const std::chrono::year_month_day &Colonna::getData() const {
        return dataC;
    }

    void Colonna::setData(const std::chrono::year_month_day &dataC) {
        Colonna::dataC = dataC;
    }


} // colonna

主.cpp

#include <chrono>
#include <iostream>
#include "Colonna.h"

using namespace colonna;
using namespace std;
using namespace std::chrono;

int main() {

    Colonna colonna ({month(1)/day(12)/year(2024)});
    std::cout << colonna.getData() << '\n';
}

谢谢大家

我使用 IDE 和以下命令运行了测试

clang++ --std=c++20 main.cpp clang++ --std=gnu++20 main.cpp

c++ c++20 clion cout c++-chrono
1个回答
0
投票

clang 版本字符串

clang-1500.1.0.2.5
映射到 LLVM 版本 16.0.0。

不幸的是

std::chrono::operator<<(std::chrono::year_month_day)
直到 LLVM 17 才被添加到 clang 的 libc++ 中,如在此 demo 中所示。

© www.soinside.com 2019 - 2024. All rights reserved.