数组类的构造函数
Constructor of class of an array
我在此代码中遇到错误
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&)’
您正在尝试在已构造的对象上调用构造函数...默认构造函数是在数组创建期间调用的,因此您无法再次"构造"对象。 对于您的应用程序,您可能需要研究使用一种std::vector
,您可以在其中使用从一组默认参数初始化的对象创建类似数组的容器。
例如,您可以执行以下操作:
std::vector<business> array(10, business(business_string, rating));
我相信
你想要这样的东西:
b[2] = business("Denny's", 50);
这将通过使用给定参数调用构造函数来创建临时业务变量。 然后将临时文件复制到阵列 b
的插槽 3 中。
数组
了已经使用该类的default
构造函数b
创建了 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
中,那就更好
business b[10];
创建 10 个"默认"业务对象。什么是b_count?我希望从 0 到 9 有一些 int。但是在这里,您正在使用 2 个参数"调用"业务对象:
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;
}
相关文章:
- 在字符数组维度分析中构造字符数组
- 第 i 个元素返回 i 的函数数组
- 使用嵌套函数数组是个好主意吗?
- 正确实现类函数数组
- 试图引用已删除函数数组的相等运算符
- 如何在静态函数中使用成员函数数组
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 无法创建函数数组
- 构造函数数组
- 使用开关或定义函数数组 - 更快
- 如何使用构造函数的参数构造成员数组的每个元素
- 编写一个函数,该函数将覆盖主函数数组中的值
- 函数,该函数动态构造字节数组并返回长度
- 可以像'funs[1]();'一样调用的函数数组
- std::AVX内部函数数组
- 如果数组大小未知,如何将函数数组作为参数传递
- 从函数数组中获取值
- 使用元编程在编译时初始化函数数组
- 复制构造函数 [数组] C++
- 深层复制构造函数数组类