从类模块中检索信息以在switch语句中输出时出现问题 我知道这可能是一些有经验的东西显而易见的,但我正处于我的第一个真正的C++编程课程的中间。我在代码中遇到了一些我一直试图解决但没有成功的问题。我试图提取存储在这些类模块内部的数组中的“m_cost”的总值之和。我想在switch语句中输出总值,以便打印输出。看看是否有人能给我指出正确的方向,或者我是否完全偏离了逻辑

从类模块中检索信息以在switch语句中输出时出现问题 我知道这可能是一些有经验的东西显而易见的,但我正处于我的第一个真正的C++编程课程的中间。我在代码中遇到了一些我一直试图解决但没有成功的问题。我试图提取存储在这些类模块内部的数组中的“m_cost”的总值之和。我想在switch语句中输出总值,以便打印输出。看看是否有人能给我指出正确的方向,或者我是否完全偏离了逻辑,c++,class,switch-statement,C++,Class,Switch Statement,有关项目代码部分: void materialsMenu() { Inventory record[MAX_REC]; int i, n; cout << "\n=====Inventory Management=====\n"; cout << "\nHow many Materials are there to be used? : "; cin >> n; cout << "Enter " << n &

有关项目代码部分:

void materialsMenu()
{
  Inventory record[MAX_REC];
  int i, n;

  cout << "\n=====Inventory Management=====\n";
  cout << "\nHow many Materials are there to be used? : ";
  cin >> n;

  cout << "Enter " << n << " Materials\n";
  for (i = 0; i < n; i++)
    record[i].getdata();

  cout << "\n\n---Material Information---\n";
  cout << "\n" << setw(8) << "Item Name  "
      << setw(10) << " Price per foot "
      << setw(19) << " Cost " << endl;
  cout << endl << "-------------------------------------------" << endl;

  for (i = 0; i < n; i++)
    record[i].showdata();
}

void Inventory::getdata() {
  cout << endl;
  cout << "\nEnter Material Name : ";
  cin >> itemName;
  cout << "Enter Price Per Foot : ";
  cin >> ppf;
  cout << "Enter Total Length Needed in Feet (ft) : ";
  cin >> length;
  cout << endl;

  m_cost = ppf*length;
  m_costT=???????? **this is the issue** 
}

考虑这样的东西来保存你的记录。它非常简单,但它展示了一个类持有另一个类的想法,并显示了信息隐藏和各种其他花絮。你很难得到这个总数,因为唱片类不应该关心这个。总数是一个超出记录范围的概念。因此,很难从你想做的地方计算出来。(虽然可能,但它打破了所有的C++规则,应该避免)

例如:

class Record;

class RecordHolder
{
public:
    int GetTotal() 
    {
        int retVal = 0;
        for(int i=0; i<10; i++)  // Magic number 10 for demo purposes only...
        {
            retVal += records[i].m_cost;  // Or use a public get function.
        }
        return retVal;
    }

private:
    Record records[10];  // Magic number 10 for demo purposes only...
};
类记录;
职业记录保持者
{
公众:
int GetTotal()
{
int-retVal=0;

对于(int i=0;i考虑这样的东西来保存您的记录。这很简单,但它演示了一个类保存另一个类的想法,并显示了信息隐藏和各种其他花絮。您很难获得总数,因为记录类不应该关心这一点。总数是一个超出记录范围的概念因此,很难从你想做的事情来计算这个问题(尽管它是可能的,但是它打破了所有的C++规则,应该避免)

例如:

class Record;

class RecordHolder
{
public:
    int GetTotal() 
    {
        int retVal = 0;
        for(int i=0; i<10; i++)  // Magic number 10 for demo purposes only...
        {
            retVal += records[i].m_cost;  // Or use a public get function.
        }
        return retVal;
    }

private:
    Record records[10];  // Magic number 10 for demo purposes only...
};
类记录;
职业记录保持者
{
公众:
int GetTotal()
{
int-retVal=0;

对于(int i=0;iIs真的需要所有不相关的代码来演示您的问题吗?我不确定我的问题在哪里,只是尝试将所有内容放入scope.Debugger。使用调试器。调试器允许您单步执行代码,监视变量值和执行流。通常,使用调试器比发布cor更快直接访问StackOverflow并等待有人检查您的代码或为您调试代码。请用调试会话的结果编辑您的帖子。@ThomasMatthews我已经编辑了我的初始问题和代码。这不是调试问题,我只是想不出下一步如何解决这个问题,这让我抓狂,因为我想不出来就我个人而言。不幸的是,你的编辑太严重了,删除了一些关于你的类的信息,这使得很难看出什么是错误的。因为不是,我不知道m_costT
应该计算什么。真的需要所有不相关的代码来证明你的问题吗?我不确定我的问题在哪里,just尝试将所有内容放入scope.Debugger。使用调试器。调试器将允许您单步执行代码,观察变量值和执行流。通常,使用调试器比正确过帐到StackOverflow并等待有人检查或为您调试代码要快。请使用调试会话的结果。@ThomasMatthews我已经编辑了我的初始问题和代码。这不是调试问题,我只是想不出解决这个问题的下一步,这让我抓狂,因为我自己无法解决。不幸的是,您的编辑太过严厉,删除了一些关于您的类等的信息,使它变得更糟我很难看出什么是错的。事实并非如此,我不知道
m_costT
应该计算什么。谢谢你,我在想,我是不是在做类类型的数据结构时咬得太多了,还是应该删除并重新生成“for”对于Switter语句的子结构中的单个项,数组语句是不存在的。我不认为我在这里给了您什么,也不认为您创建的是太大的一个咬。它是C++风格的更多数据组织。在将来,当您遇到数据无法按您所需要的方式提供给您的问题时,请后退一步,看看是否存在。这可能是一种更好的数据组织方式。以适当的方式组织数据会使编码变得更容易,也更易于维护。谢谢你,我想知道我是不是在这个时候对类类型的数据结构做了一些力不从心的事,还是应该删除并重新生成“for”对于Switter语句的子结构中的单个项,数组语句是不存在的。我不认为我在这里给了您什么,也不认为您创建的是太大的一个咬。它是C++风格的更多数据组织。在将来,当您遇到数据无法按您所需要的方式提供给您的问题时,请后退一步,看看是否存在。这可能是一种更好的组织数据的方法。以适当的方式组织数据会使编码变得更容易,并且更易于维护。