Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何生成类对象的向量?_C++_Vector - Fatal编程技术网

C++ 如何生成类对象的向量?

C++ 如何生成类对象的向量?,c++,vector,C++,Vector,我对向量的工作原理有点困惑。我要做的是创建一个包含5个对象的向量。然后,我要做的是从一个输入文件中读取,该文件包含5个州的名称和不同税率。我想在int main()中的数组中存储对象中的州名称和州税率 这是名为“Tax Rates.dat”的输入文件。这些数字分别是各州的销售税、财产税和所得税税率 TEXAS .0825 .02 -.03 MARYLAND .065 .04 .05 OHIO .03 .025 .03 CALIFORNIA .095 .055 .045

我对向量的工作原理有点困惑。我要做的是创建一个包含5个对象的向量。然后,我要做的是从一个输入文件中读取,该文件包含5个州的名称和不同税率。我想在
int main()
中的数组中存储对象中的州名称和州税率

这是名为“Tax Rates.dat”的输入文件。这些数字分别是各州的销售税、财产税和所得税税率

TEXAS      .0825 .02 -.03
MARYLAND   .065 .04 .05
OHIO       .03 .025 .03
CALIFORNIA .095 .055 .045
MAINE      .02 .015 .02
这是我的类接口,名为“Tax Bill.h”

这是我的类实现,名为“Tax Bill.cpp”

#包括“税单.h”
void TaxBill::setValue(字符串名称,int x)
{}
作废税单::数据有效(双倍a、双倍b、双倍c)
{
if(a<0)
a=0;
if(b<0)
b=0;
if(c<0)
c=0;
返回;
}
这是到目前为止我的主要源代码

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <vector>
#include "Tax Bill.h"

using namespace std;


int main()
{
      const int SALARY = 100000,
            HOUSE = 246000,
            PURCHASE = 36000;
      ifstream fin;
      fin.open("Tax Rates.dat");
      vector <TaxBill> someVector (5);
      double sales,
            property,
            income;
      double taxRates[5][3];
      string name;

      if(!fin)
            return 0;
      else
      {
            for(int i = 0; fin >> name >> sales >> property >> income; i++)
            {
                  dataValid(sales, property, income);
                  taxRates[i][0] = sales;
                  taxRates[i][1] = property;
                  taxRates[i][2] = income;
            }
      }
#包括
#包括
#包括
#包括
#包括
#包括“税单.h”
使用名称空间std;
int main()
{
const int SALARY=100000,
豪斯=246000,
购买=36000;
流鳍;
财务公开(“税率数据”);
向量someVector(5);
双倍销售,
财产,,
收入;
双重税率[5][3];
字符串名;
如果(!fin)
返回0;
其他的
{
对于(int i=0;fin>>名称>>销售>>财产>>收入;i++)
{
数据有效(销售、财产、收入);
税率[i][0]=销售额;
税率[i][1]=物业;
税率[i][2]=收入;
}
}
for循环是我想将从输入文件读取的状态名称和
I
存储到类对象的字符串
name
index
中的地方。之所以要建立索引,是因为在程序的后面,我想按字母顺序对向量中的对象进行排序,而不是对应税率所在的数组这些都是存储的

我也不想使用函数
push\u back()

我想我的问题是,我如何生成5个类对象的向量并访问它们


请记住,我的程序很难完成,这是一个阻碍我前进的障碍。

这里是使用代码中的向量的示例。这里您声明

vector <TaxBill> someVector (5);
但是等等,在你的类中,没有明确的方法来设置字符串名和索引。所以我想你忘了把它放在这里,因此我在类中创建了自己的

class TaxBill
{
public:
      void setValue(string Name, int Index){
         name = Name; index = Index;
      }
      void dataValid(double&, double&, double&);

private:
      string name;
      int index;
      double taxBill;
}
现在使用向量,我只是这样使用属性

someVector[0].setValue("someName",1);
塔达,你让它工作。顺便说一句,我不知道你为什么在类中声明一个过程,但你想在主程序中多次使用它。我是说这个

dataValid(sales, property, income);

要使用它,我建议您在主程序中而不是在类中创建一个过程,无论如何,该行都会产生一个错误。

这个
taxRates[i,0]
不会做我认为它会做的事情。只需将其他类的向量指定给它,就像
someVector[0]=..;
@mathematicsian1975有什么问题吗?是逗号运算符。要索引,请使用
[i][n]
双重税率[5,3];税率[i,0]=销售;
您从哪里了解到的?如果这对您有帮助,请向上投票或选择作为答案,而不是在评论中说谢谢,这样也会帮助其他人。我的向上投票不算数,因为我对该网站是全新的,但我选择它作为答案。
class TaxBill
{
public:
      void setValue(string Name, int Index){
         name = Name; index = Index;
      }
      void dataValid(double&, double&, double&);

private:
      string name;
      int index;
      double taxBill;
}
someVector[0].setValue("someName",1);
dataValid(sales, property, income);