小编Rod*_*and的帖子

使用c ++ lambdas和静态变量的预期行为

我正在使用VS2013,并发现在使用包含lambda的类的多个实例时,我认为是奇怪的行为,并且这些lambdas包含静态变量.静态变量似乎是共享的.

示例代码,非常精简但仍然捕获了本质:

class HasLambda
{
public:
    typedef const char* ( *ToCharPtr ) ( const int& );
    void Init( ToCharPtr pfnToCharPtr ) {
        m_pfnCharPtrConverter = pfnToCharPtr;
    }

    const char* IntToString( int i ) {
        return m_pfnCharPtrConverter( i );
    }

    static HasLambda* Make() {
        HasLambda* pHasLambda = new HasLambda;
        pHasLambda->Init( [] ( const int &i ) -> const char* { static char buf[ 33 ]; sprintf( buf, "%d", i ); return buf; } );
        return pHasLambda;
    }

protected:
    ToCharPtr m_pfnCharPtrConverter;
};

int …
Run Code Online (Sandbox Code Playgroud)

c++ lambda static c++11 visual-studio-2013

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

标签 统计

c++ ×1

c++11 ×1

lambda ×1

static ×1

visual-studio-2013 ×1