我使用 boost::variant 制作了一个程序,但不知何故 const 不正确。
错误:将 'const CompareTitle' 作为 'bool CompareTitle::operator()(const T1&, const T2&) [with T1 = TestSeizoen, T2 = TestSeizoen]' 的 'this' 参数传递,丢弃限定符 [-fpermissive]
[T1=TestFilm, T2 = TestSeizoen] 等的相同错误。
这是代码:
#include <iostream>
#include <vector>
#include "boost/variant.hpp"
using namespace std;
class TestFilm{
private:
string titel_;
public:
TestFilm(const string& titel): titel_(titel){};
const string titel() const {return titel_;};
};
class TestSeizoen{
private:
string titel_;
public:
TestSeizoen(const string& titel): titel_(titel){};
const string titel() const {return titel_;};
};
struct CompareTitle: boost::static_visitor<bool>{
template <typename T1, typename T2>
bool operator() (const T1& t1 , const T2& t2){
return t1.titel() == t2.titel();
}
};
int main() {
typedef boost::variant<TestFilm,TestSeizoen> var;
vector <var> vec;
TestFilm film1("titel1");
vec.push_back(film1);
TestSeizoen seizoen1("titel2");
vec.push_back(seizoen1);
vector<var>::iterator it;
bool compare = boost::apply_visitor(CompareTitle(),*vec.begin(),*(vec.begin()+1));
return 0;
}
我试图使 operator() 成为 const 成员函数,但这并没有解决问题。有人可以帮忙吗?如果需要,我可以提供更多信息。提前致谢。