小编Shi*_*hat的帖子

获取错误:命名空间'std'中的'mutex'没有在MinGW mysys提示符中命名类型

我从官方网站下载了MinGW并将其安装在我的Windows 8.1机器上.

运行g ++ --version给了我g ++.exe(GCC)4.8.1.

我正在尝试编译MinGW编译器中的现有代码库,但它失败并出现以下错误:

error: 'mutex' in namespace 'std' does not
name a type
     private: std::mutex m_Mutex;
              ^
error: 'condition_variable' in namespace 's
Run Code Online (Sandbox Code Playgroud)

以及与锁定和线程相关的更多错误.

我能够在Cygwin-64中编译相同的代码库而没有任何问题.我需要在MinGW中成功构建和编译,以便创建一些在MSVS上兼容的.dll文件.

我已经提到了以下链接,但我无法通过解决方案.

使用mingw和g ++使用std :: thread/mutex在Win7下工作4.7.2
MinGW 4.8.1 C++ 11线程支持

非常感谢您的帮助.谢谢.

c++ multithreading mingw compiler-errors c++11

6
推荐指数
1
解决办法
8497
查看次数

C/C++函数递归

我一直试图理解下面的代码片段,但并不完全得到输出背后的逻辑.

int Func(int x, int y){
    if (x < y)
        return 0;
    else
        return Func(x - y, y) + 1;
}

int main()
{
    int x = 50, y=10;
    printf("%d  \n",Func(x,y));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面程序的输出显然是5.任何人都可以告诉我递归类型方法实际上意味着什么"+1"(in return Func(x - y, y) + 1;)以及它如何有执行流程.

如果我只是执行return Func(x-y,y);然后输出为0,这很好.但是为什么第一种情况下输出为5?

c c++ recursion

3
推荐指数
1
解决办法
164
查看次数

为什么我们不能在c ++的拷贝构造函数中使用pass by pointer?

我知道c ++中复制构造函数的一般语法会引用.但是,我怀疑如果我们使用指针类型而不是引用会发生什么?为什么我们不在Copy构造函数中使用pass by pointer机制?它有哪些主要缺点?

c++ constructor copy-constructor c++11

2
推荐指数
3
解决办法
6368
查看次数

可以使用C++中的dynamic_cast完成上传和下传

我在c ++中经历了dynamic_cast概念.

假设我们有一个dynamic_cast和2个派生类class Base,class D1它们派生自class D2
Class Base,它有一个虚函数Base.
我的问题是:
1.upcast和downcast都可以在dynamic_cast中完成吗?
2.如果是,哪一个更优先,更有利.在这种情况下,我们可以在这方面进行贬低/上调?
3.是否推荐任何演员表或有害?

请在考虑上述情况的情况下解释相同的用例,以便对此有更清晰的了解.任何明确的解释都会非常有用.
提前致谢.

c++ virtual inheritance dynamic-cast visual-c++

2
推荐指数
1
解决办法
2600
查看次数