繁体   English   中英

C ++打印在main中声明的数组的内容

[英]C++ printing contents of array that was declared in main

在必须在主数组中声明数组的程序上工作(在这种情况下,是distList[5] ),并且必须将其发送到一个成员,在其中必须由用户输入( inputDist )填充,然后再将其发送给另一个成员从那里开始( printAndAdd ),按照名称建议进行打印和添加。 我相信我已经把阵列装满了,但是我不确定该怎么做。 任何帮助表示赞赏。

void CDistance::inputDist(CDistance distList[], int size)
{

    for (int i = 0; i < 1; i++)
    {
        cout << "Please enter 5 digits following each one with a space to place into the array: " << endl;
        int ui1;    cin >> ui1;
        int ui2;    cin >> ui2;
        int ui3;    cin >> ui3;
        int ui4;    cin >> ui4;
        int ui5;    cin >> ui5;
        distList[i] = CDistance(ui1, ui2, ui3, ui4, ui5);
        cout << distList;

    }
}

void CDistance::printAndAdd(const CDistance distList[], int size)
{
    //cout << distList;
}

int main()
{
    CDistance distList[5];

    CDistance d1, d2(0, 0, 0, 0, 0);

    d1.setDistt();
    d1.printDistt();
    d1.menu(d2);
    d1.inputDist(distList, 5);
    d1.printAndAdd(distList, 5);
    _getch();
    return 0;
}

另外,这是CDistance的类定义:

class CDistance
{
private:
    int feet;
    int inches;
    int feet2;
    int inches2;
    int five;

public:
    CDistance();
    CDistance(int, int, int, int, int);
    ~CDistance();
    void setDistt();
    void printDistt() const;
    void add(const CDistance&) const;
    void subtract(const CDistance&) const;
    void menu(const CDistance&) const;
    void inputDist(CDistance distList[], int size);
    void printAndAdd(const CDistance distList[], int size);
};

CDistance::CDistance()
{
    feet = 0;
    inches = 0;
    feet2 = 0;
    inches2 = 0;
    five = 0;
}

CDistance::CDistance(int f, int i, int f2, int i2, int fi)
{
    feet = f;
    inches = i;
    feet2 = f2;
    inches2 = i2;
    five = fi;
}

CDistance::~CDistance()
{
}

在评论中,您说:

我将如何处理? 当我尝试for循环时,尝试打印内容,这给我的错误是“没有运算符'<<'与这些操作数匹配。” 我确实尝试过创建<<的运算符重载,但不确定如何执行它。

声明operator>>operator<<重载让你读CDistance从流和写CDistance到流。

class CDistance;
std::istream& operator>>(std::istream& is, CDistance& distance);
std::ostream& operator<<(std::ostream& os, CDistance const& distance);

让他们成为班上的friend

class CDistance
{

   ...

   friend std::istream& operator>>(std::istream& is, CDistance& distance);
   friend std::ostream& operator<<(std::ostream& os, CDistance const& distance);

};

实施它们。

std::istream& operator>>(std::istream& is, CDistance& d)
{
   return (is >> d.feet >> d.inches >> d.feet2 >> d.inches2 >> d.five);
}

std::ostream& operator<<(std::ostream& os, CDistance const& distance);
{
   // Add a space between the members when writing it out.
   return (is << d.feet << " " << d.inches << " "
              << d.feet2 << " " << d.inches2 << " " << d.five);
}

现在您可以使用

Distance d;
std::cin >> d;
std::cout << d << std::endl;

我建议进行以下其他改进:

您不需要inputDistprintAndAdd成为该类的成员函数,因为它们不需要访问该类的private成员。 它们可以是非成员函数。

void inputDist(CDistance distList[], int size)
{
   // for (int i = 0; i < 1; i++)
   for (int i = 0; i < size; i++) // Use size, not 1
   {
      cout << "Please enter 5 digits following each one with a space to place into the array: " << endl;
      cin >> distList[i];
      cout << distList << endl;
   }
}

void printAndAdd(const CDistance distList[], int size)
{
   for (int i = 0; i < size; i++)
   {
      cout << distList[i] << std::endl;
      // Not sure what "Add" means to you.
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM