C++ 从C+传递数组+;构造函数
如果我有一个包含数组的构造函数的类,并且我想将该数组的每个成员传递给该类的一个函数进行加法,那么我该如何做呢 例如,建造商实施C++ 从C+传递数组+;构造函数,c++,arrays,function,constructor,pass-by-reference,C++,Arrays,Function,Constructor,Pass By Reference,如果我有一个包含数组的构造函数的类,并且我想将该数组的每个成员传递给该类的一个函数进行加法,那么我该如何做呢 例如,建造商实施 person::person { double NoPerson[150]; //no of people for(int j=0;j<=150;j++) { NoPerson[j]=1.00;//has to set to 1 pound } double person::aveWage(double NoPerson[])
person::person
{
double NoPerson[150]; //no of people
for(int j=0;j<=150;j++)
{
NoPerson[j]=1.00;//has to set to 1 pound
}
double person::aveWage(double NoPerson[])
{
double total;
double NoPerson[150];
using namespace std;
for(int i=0;i<=150 ;i++)
{
total=total+cashCus[i];
}
cout<<"total cash for all customers "<<total <<endl;
}
person::person
{
双重身份[150];//人数
对于(int j=0;j您的代码有点不完整。实际上,代码中有三个不同的数组,称为“NoPerson”,一个是构造函数的本地数组,一个是aveWage的参数,然后在aveWage中有一个本地声明的NoPerson数组。此外,您没有使用数组做任何事情,构造函数中的数组被删除当你离开构造函数时。如果你想用NoPerson数组作为aveWage的参数从构造函数中调用aveWage,你可以这样做,但是aveWage中的本地声明会掩盖它。你的代码有点不完整。实际上,代码中有三个不同的数组叫做“NoPerson”,一个是构造函数的本地数组,一个是ar数组gument到aveWage,然后在aveWage中有一个本地声明的NoPerson数组。此外,您没有将数组用于任何事情,并且当您离开构造函数时,构造函数中的数组将被删除。如果您想从构造函数中调用aveWage,将NoPerson数组作为aveWage的参数,您可以这样做,但本地aveWage中的eclaration将屏蔽它。它真的必须是数组吗?如果是这样,您需要将大小随它一起传递,例如int add(int[]项,int size)
。本教程介绍数组的基本知识:
但是,数组是一个“普通C”的东西。如果你使用C++,你几乎总是使用.< /p>它确实是一个数组吗?如果是这样,你需要把它和它一起传递,例如:代码> int添加(int []项,int size)< /> >。
但是,数组更多的是“普通C”的东西。如果你使用C++,你几乎总是使用一个.< /p>< p > 1。你的数组边界错误了(应该是代码> < 150 < /代码>)。
2) 在C++98/03中,您不能初始化成员数组;在C++11中,您可以(尽管初始化150个非零值很麻烦):
person::person():NoPerson{1,1,1.}{/code>(实际上是150个元素)。(不过,这个问题不太可能在正确的设计修改后仍然存在。)
3) 可以使用std::acculate
(例如std::cout1)编写aveWage
循环。您的数组边界错误(应该是<150
)
2) 在C++98/03中,您不能初始化成员数组;在C++11中,您可以(尽管初始化150个非零值很麻烦):person::person():NoPerson{1,1,1.}{/code>(实际上是150个元素)。(不过,这个问题不太可能在正确的设计修改后仍然存在。)
3) aveWage
循环可以用std::acculate
编写(例如std::cout我不知道我是否理解正确,但在我看来,您有一个数组(NoPerson
)要在构造函数中初始化,然后从类中的其他函数使用
在这种情况下,您不应该将其设置为局部变量,因为这样类中的其他函数就无法访问它。相反,您应该将其设置为类的成员变量,就像函数一样
大概是这样的:
class Person
{
public:
Person()
{
for (int i = 0; i < 150; i++)
NoPerson[i] = 1;
}
double total()
{
double total;
for (int i = 0; i < 150; i++)
total += NoPerson[i];
return total;
}
private:
// Variables and functions in the 'private' section can only be
// referenced by the function in this class.
int NoPerson[150]; // This is a member variable
}
班级人员
{
公众:
人()
{
对于(int i=0;i<150;i++)
NoPerson[i]=1;
}
双倍总计()
{
双倍总数;
对于(int i=0;i<150;i++)
总计+=无人员[i];
返回总数;
}
私人:
//“专用”部分中的变量和函数只能是
//由此类中的函数引用。
int NoPerson[150];//这是一个成员变量
}
正如您在上面的示例中所看到的,变量NoPerson
是在类中定义的,而不是在函数中定义的。这使得类中的所有函数都可以访问该变量。我不知道您是否理解正确,但在我看来您有一个数组(NoPerson
)要在构造函数中初始化,然后从类中的其他函数中使用
在这种情况下,您不应该将其设置为局部变量,因为这样类中的其他函数就无法访问它。相反,您应该将其设置为类的成员变量,就像函数一样
大概是这样的:
class Person
{
public:
Person()
{
for (int i = 0; i < 150; i++)
NoPerson[i] = 1;
}
double total()
{
double total;
for (int i = 0; i < 150; i++)
total += NoPerson[i];
return total;
}
private:
// Variables and functions in the 'private' section can only be
// referenced by the function in this class.
int NoPerson[150]; // This is a member variable
}
班级人员
{
公众:
人()
{
对于(int i=0;i<150;i++)
NoPerson[i]=1;
}
双倍总计()
{
双倍总数;
对于(int i=0;i<150;i++)
总计+=无人员[i];
返回总数;
}
私人:
//“专用”部分中的变量和函数只能是
//由此类中的函数引用。
int NoPerson[150];//这是一个成员变量
}
正如您在上面的示例中所看到的,变量NoPerson
是在类中定义的,而不是在函数中定义的。这使得类中的所有函数都可以访问它。首先,在循环中循环一对多!其次,为什么不将NoPerson
设置为类的成员变量?这是编程的基本规则是“零,一,多”。像“150”这样的数字基本上不应该出现在你的代码中。@JoachimPileborg你有例子吗?首先你在循环中循环一对多!其次,为什么不把NoPerson
变成类的成员变量?编程的基本规则是“零,一,多”。像“150”这样的数字基本上不应该出现在您的代码中。@JoachimPileborg您有一个例子吗?但是如果我想让其他类访问这个变量-noPerson呢?那么您必须使该变量成为全局变量。在头文件中添加一个声明(