在我的一个课程中,我尝试使用std::priority queue
指定的 lambda 进行比较:
#pragma once
#include <queue>
#include <vector>
auto compare = [] (const int &a, const int &b) { return a > b; };
class foo
{
public:
foo() { };
~foo() { };
int bar();
private:
std::priority_queue< int, std::vector<int>, decltype(compare)> pq;
};
我的程序编译完美,直到我添加一个.cpp
文件来伴随标题:
#include "foo.h"
int foo::bar()
{
return 0;
}
这一次,我的编译器产生了一个错误:
>main.obj : error LNK2005: "class <lambda> compare" (?compare@@3V<lambda>@@A) already defined in foo.obj
.cpp
如果我的头文件包含 lambda,为什么我不能创建随附文件?
编译器:Visual Studio 2012
我的main.cpp
:
#include "foo.h"
int main(){
return 0;
}