程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C++ `using {var}` 不是 {child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决C++ `using {var}` 不是 {Child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时?

开发过程中遇到C++ `using {var}` 不是 {Child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时的问题如何解决?下面主要结合日常开发的经验,给出你关于C++ `using {var}` 不是 {Child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时的解决方法建议,希望对你解决C++ `using {var}` 不是 {Child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时有所启发或帮助;

下面的代码在第 7 行给出了错误 error C2039: 'value_type': is not a member of 'Child_Container'。这在 MSVC 和 Clang 中发生,但在 GCC 中没有。因此当使用 std::deque 而不是 std::set 时,std::vector。有谁知道为什么?谢谢!

#include <deque>

template<typename T_Container>
struct _VIEw
{
    using           nopE = typename T_Container::value_type;
};

template<typename T_type,typename T_Self>
struct Base_Container
{
    using value_type = T_type;
    std::deque<_VIEw<T_Self>>   _vIEws;
};

struct Child_Container : public Base_Container<double,Child_Container>
{
    // using value_type = double; // Even with this line.
    using base = Base_Container<value_type,Child_Container>;
};

int main()
{
    return 0;
}

解决方法

这里的变量只是std::deque在实例化时是否要求其元素类型完整。 (当然,当某些成员函数被实例化时它必须是完整的,但那是分开的。)如果是这样,你最终需要你的 value_type 在它被声明之前,这会产生观察到的错误。 C++17 要求 std::vector 支持不完整类型,但没有说明 std::deque,这就是为什么每个标准库都不同。

大佬总结

以上是大佬教程为你收集整理的C++ `using {var}` 不是 {child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时全部内容,希望文章能够帮你解决C++ `using {var}` 不是 {child class} 的成员 - 在 MSVC 或 Clang 中使用 `std::deque` 时所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。