這個錯誤是怎么回事?
函式不匹配?
namespace shop_message{
class object{
protected:
double attack_n;
int price_b;
double sheid_n;
private:
string names;
int level;
tuple<string,int,double,double,int>
get_all_object_message() const
{
return make_tuple(names,price_b,attack_n,
sheid_n,level);
}
public:
bool is_in_shop;
bool can_buy_it(const personal_message& p)
{
return p.get_gold_n()>=price_b;
}
virtual tool* turn_to_tool()=0;
void buy_it()
{
is_in_shop=false;
}
auto get_basic_message() ->
decltype(get_all_object_message()) const
{
return get_all_object_message();
}
};
bool operator==(object& one,object& two)
{
return one.get_basic_message()==two.get_basic_message();
}
class basket{
protected:
int find_num(const object*& this_o,const
vector<pair<object*,int>>& to)
{
int c=1;
for(const auto& p:to)
if(p.first==this_o)
return c;
else
++c;
return 0;
}
private:
string who_buy;
vector<object*> my_buy;
vector<pair<object*,int>> num_object;
void new_num()
{
vector<pair<object*,int>> vo;
for(int i=0;i<=my_buy.size();++i)
{
if(!find_num(my_buy[i],vo))
vo.push_back({my_buy[i],1});
else
++vo[find_num(my_buy[i],vo)-1].second;
}
num_object=vo;
}
public:
pair<vector<string>,double> net_price();
shopping_message get_recorde();
void add_item(const object*& this_object);
void delete_item(const object*& that_object);
};
}
E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp In member function 'void shop_message::basket::new_num()':
750 31 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Error] no matching function for call to 'shop_message::basket::find_num(shop_message::object*&, std::vector<std::pair<shop_message::object*, int> >&)'
750 31 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] candidate is:
730 8 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] int shop_message::basket::find_num(const shop_message::object*&, const std::vector<std::pair<shop_message::object*, int> >&)
730 8 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<shop_message::object*> >::value_type {aka shop_message::object*}' to 'const shop_message::object*&'
753 33 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Error] no matching function for call to 'shop_message::basket::find_num(shop_message::object*&, std::vector<std::pair<shop_message::object*, int> >&)'
753 33 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] candidate is:
730 8 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] int shop_message::basket::find_num(const shop_message::object*&, const std::vector<std::pair<shop_message::object*, int> >&)
730 8 E:\私人資訊\VS_2019_C++\空間決戰專案\空間決戰專案——實驗代碼.cpp [Note] no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<shop_message::object*> >::value_type {aka shop_message::object*}' to 'const shop_message::object*&'
函式的引數不是都匹配了嗎?
uj5u.com熱心網友回復:
find_num引數型別不匹配,改成find_num(const object* this_o,constvector<pair<object*,int>>& to)試下,const object*& this_o,感覺好奇怪啊
uj5u.com熱心網友回復:
感謝您,問題確實解決了。
但是為什么按照我之前的做法會發生錯誤呢?
指標的參考 函式的宣告編譯器并沒有報錯啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19186.html
標籤:C++ 語言
上一篇:求助 POJ3278為什么會WA
下一篇:c語言如何實作視窗滾動?
