打印出一个由Class中的Referenced传递的数组

时间:2017-09-21 03:08:56

标签: c++ arrays class pass-by-reference

我很困惑如何打印aVect和bVect中的所有元素。根据我的理解,在int main的内部浮动FloatArray1包含10个点,这些点都填充了它旁边的{}内的数字。然后,该数组和数组大小(10)将被传递到名为aVect的类对象中。 我感到困惑的是,当没有任何内容传递给void printElement函数时,我将如何打印aVect中的元素?从我所学的数组,如果它是像

int array[5] = {1,2,3,4,5}
for (int i =0; i < 5; i++)
{cout << array[i] << endl;}

但那只会起作用,因为它直接在相同的代码范围内。在下面的代码中,printElements函数将用于aVect和bVect,因此它不能通过引用专门传递,并且不能像上面那样完成。任何人都可以帮我试试这个吗?几乎学习了类和函数的基础知识。

 class FloatVectArray {
 public:
void printElements();  // prints all elements in the vector
private:
float *vector;      // the vector
int vectorsize; // size of the vector 

void FloatVectArray::printElements() 
{
for (int i = 0; i < 10; i++)
{
    cout <<  << endl;
}
}

int main() {
// testing the implementation of a float vector using array
// declare & initialize an array of floats and create a float vector aVect 
float FloatArray1[10] = { 2.1, 7.2, 3.3, 6.4, 1.5, 43.6,72.7,19.8,39.9, 71.1 };
FloatVectArray aVect(FloatArray1, 10);
cout << "Printing all elements in aVect:" << endl;
aVect.printElements();

// declare & initialize another array of floats and create float vector bVect
float FloatArray2[10] = { 1.1, 2.2, 5.3, 6.4, 1.5, 7.6, 9.7,17.8, 92.9, 42.1 };
FloatVectArray bVect(FloatArray2, 10);
cout << "Printing all elements in bVect:" << endl;
bVect.printElements();

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,那么你所缺少的是因为它的

void FloatVectArray::printElements()

而不是

void printElements()

class FloatVectArray的成员属于函数体。您只需按名称访问它们:

cout << vector[i] << endl;

如果你真的想要你可以明确地定义成员变量:

cout << FloatVectArray::vector[i] << endl;

但在这种情况下没有必要。

最好相应地调整for循环

for (int i = 0; i < vectorsize; i++)

如果我理解你的话,你的目标就是这种理解课程的东西,但无论如何还有两个提示:

  • 如果您只是将指针复制到数组,就像我在下面完成的代码中所做的那样,如果传入的数组过期,那么FloatVectArray将有一个悬空指针,那就不好了
  • 从一开始就开始使用well-thougt空格。它使你的代码更容易阅读,并释放大脑容量更重要的事情。

完成的代码供您参考:

#include <iostream>

class FloatVectArray {
public:
    FloatVectArray(float* v, int size) :vector(v), vectorsize(size) {};
    void printElements();  // prints all elements in the vector
private:
    float *vector;      // the vector
    int vectorsize; // size of the vector
};

void FloatVectArray::printElements()
{
    for (int i = 0; i < vectorsize; i++)
    {
        std::cout << vector[i] << std::endl;
    }
}

int main(int argc, const char * argv[]) {
    // testing the implementation of a float vector using array
    // declare & initialize an array of floats and create a float vector aVect
    float FloatArray1[10] = { 2.1, 7.2, 3.3, 6.4, 1.5, 43.6,72.7,19.8,39.9, 71.1 };
    FloatVectArray aVect(FloatArray1, 10);
    std::cout << "Printing all elements in aVect:" << std::endl;
    aVect.printElements();

    // declare & initialize another array of floats and create float vector bVect
    float FloatArray2[10] = { 1.1, 2.2, 5.3, 6.4, 1.5, 7.6, 9.7,17.8, 92.9, 42.1 };
    FloatVectArray bVect(FloatArray2, 10);
    std::cout << "Printing all elements in bVect:" << std::endl;
    bVect.printElements();
    return 0;
}