C++模板函数,传参数后参数添加了const属性

成员模板函数,传入非const参数,在函数中得到const属性。怎么能让传入后属性不变啊?现象如下:

/// a.h

class A{
public:
    template<typename DataType>
    static bool GetData(DataType *out){
        std::cout << typeid(out).name() << std::endl;
        return true;
    }
};


///main.cpp

struct Point2D{
    float x;
    float y;
};

int main(int argc, char *argv[])
{
    Point2D p2d2{1.0, 2.0};
    std::cout << typeid(&p2d2).name() << std::endl;
    std::thread t([=](){
        BlackBoard::GetData( &p2d2);
    });

    t.join();
    return 0;
}

/// output
/*
传入前输出:struct Point2D * __ptr64
传入后输出:struct Point2D const * __ptr64
*/

求大神指点

c++
a119258
a119258 自己解决了,是lambda表达式中的=(值传递导致的),改成&就ok了。具体为什么值传递后为什么添加const属性还不知道!!!!
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问