代码之家  ›  专栏  ›  技术社区  ›  huseyin tugrul buyukisik

不完整类型的使用无效(对于指向原子整数变量的指针)

  •  0
  • huseyin tugrul buyukisik  · 技术社区  · 5 年前

    当我写这个的时候,

    std::atomic<int> * tmp = new std::atomic<int>();
    

    g++编译器返回一个错误,说明

    invalid use of incomplete type "struct std::atomic<int>"
    

    为什么会出现这种错误?我怎么能逃避这个?我是否需要将原子变量包装在类中并使用其指针?

    同样的事情也发生在智能指针上。

    std::shared_ptr<std::atomic<int>> tmp = std::make_shared<std::atomic<int>> ();
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   Bathsheba    5 年前

    类型不完整 你的编译器给出了一个很好的提示:现在编译器的诊断非常好,值得一读!

    这意味着你没有 #include d正确的文件-因为类型不是 完成 在编辑的时候。

    总是 显式包含C++标准库文件。在这种情况下,你需要 <atomic> <memory> .

        2
  •  1
  •   Jesper Juhl    5 年前

    你需要

    #include <atomic>
    #include <memory>
    

    要访问正在使用的原子和共享的指针。