我在此代码中收到错误
class business
{
public:
business(); // Default Constructor
business(string busines,int r)
{
busines=busines;
ratings=r;
} // constructor;
private:
string busines;
int ratings;
int items_owned;
int business_cancellation;
int biz_size_of_building;
int biz_shipping_method;
};
int main(int argc, char *argv[])
{
business b[10];
b[b_count](busines,rating);
return 0;
}
它给我以下错误(http://ideone.com/FfajNS):
prog.cpp: In function ‘int main(int, char**)’:
prog.cpp:32:32: error: no match for call to ‘(business) (std::string&, int&)’
答案 0 :(得分:3)
您正在尝试在已构造的对象上调用构造函数...在创建数组期间调用了默认构造函数,因此您无法再“构造”该对象。对于您的应用程序,您可能需要考虑使用std::vector
,您可以使用从一组默认参数初始化的对象创建类似数组的容器。
例如,你可以这样做:
std::vector<business> array(10, business(business_string, rating));
答案 1 :(得分:1)
数组b
已使用该类的default
构造函数创建了10个业务对象。您可以通过business someBusiness = b[someIndex];
修改强>
如果要设置单个对象的值,只需执行此操作(注意,您不创建这些对象,只需设置它们的值):
for(int i=0; i<10; i++)
{
b[i].busines = ...;
b[i].ratings = ...;
/* or to create new ones */
b[i] = business("asd", 10);
}
如果你将这些对象存储在vector
中,就像杰森所建议的那样
答案 2 :(得分:1)
我相信你想要这样的东西:
b[2] = business("Denny's", 50);
这通过使用给定参数调用构造函数来创建临时业务变量。然后将临时值复制到数组b
的插槽3中。
答案 3 :(得分:0)
business b[10];
您创建10“默认”业务对象。什么是b_count?我希望0到9之间有一些int。 但是在这里你用一个参数“调用”一个业务对象:
b[b_count](busines,rating);
但是商家没有使用2参数定义operator()()
。
编辑:
你必须使用std::vector
并仔细阅读其他答案。
但我知道有时初学者不允许使用STL库,无论如何,你应该理解如何使用构造函数以及如何初始化数组元素。请阅读静态成员及其定义方式,并尝试了解以下示例的工作原理。
#include <string>
using std::string;
class business
{
public:
business() // Default Constructor
:busines(def_busines),ratings(def_ratings){};
business(const string& bus,int r) // constructor;
:busines(bus),ratings(r){}
static void SetDef(const string& busines,int r)
{
def_busines=busines;
def_ratings=r;
}
private:
string busines;
int ratings;
static string def_busines;
static int def_ratings;
int items_owned;
int business_cancellation;
int biz_size_of_building;
int biz_shipping_method;
};
string business::def_busines=""; // Set here the default-defaults
int business::def_ratings=1;
int main(int argc, char *argv[])
{
business::SetDef("Some business",2);
business a[10];
business::SetDef("Other business",3);
business b[10];
business c("Third business",4);
return 0;
}