我想創建一組對象。僅僅定義這個集合會給出錯誤。我現在沒有一個編譯器可以提升。所以我使用了一個在線IDE。這裏是代碼http://codepad.org/UsBAMmuh的鏈接。不知何故,它似乎並不奏效。最後,我想在另一個類的構造函數中傳遞對此集合的引用。創建一組對象
#include <iostream>
#include <boost/optional.hpp>
#include <boost/ref.hpp>
#include <boost/serialization/vector.hpp>
using namespace std;
class Fruit {
};
class Env
{
public:
Env(std::set<Fruit>& apples);
std::set<Fruit>& GetApples() const;
void AddApple(Fruit const& fruit);
private:
std::set<Fruit>& _apples;
};
Env::Env(std::set<Fruit>& apples):
_apples(apples)
{
}
std::set<Fruit>& Env::GetApples() const
{
return _apples;
}
void Env::AddApple(Fruit const& fruit)
{
this->_apples.insert(fruit);
}
class EnvHolder{
public:
void SetEnv (Env const& env);
Env& GetEnv()const;
private:
boost::scoped_ptr<Env> _env;
};
void EnvHolder::SetEnv(Env const& env)
{
this->_env.reset(new Env(env));
}
Env& EnvHolder::GetEnv() const
{
return *this->_env;
}
int main() {
std::set<Fruit> fruits;
//Fruit *fr = new Fruit();
//fruits.insert(*fr);
//Env env(fruits);
cout << "Hello" << endl;
return 0;
}
我得到以下錯誤:
/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../ include/C++/4.1.2/bits/stl_function.h:在成員函數'bool std :: less < _Tp> :: operator()(const _Tp &,const _Tp &)const [with _Tp = Fruit]': /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/boost_concept_check.h:358:實例化from'void __gnu_cxx :: _ BinaryFunctionConcept < _Func,_Return,_First,Second> :: _constraints()[with _Func = std :: le ss,_Return = bool,_First =水果,_Second =水果]' /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../..lude /c++/4.1.2/bits/stl_set.h:112:從'__gnu_norm :: set,std :: allocator'實例化'' /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.2 /../../../../include/c++/4.1.2/debug/set.h:45:從'__gnu_debug_def :: set,std :: allocator'實例化'' t.cpp:35:從這裏實例化 第226行:錯誤:'__x < __y'中的'運營商<'不匹配 編譯因 - 重大錯誤而終止。
大部分代碼都是不相關的。問題是'Fruit'不滿足實例化'std :: set'的要求。這裏有很多SO問題。 –
juanchopanza
我並沒有降低你的評價,也沒有認爲它在這裏非常合適,但如果你想避免其他SO用戶的嘲諷,試着將代碼縮小到仍然產生錯誤的最小片段。在這種情況下,它將是水果類{ }; std :: set –
odinthenerd