C++ 如何生成类对象的向量?
我对向量的工作原理有点困惑。我要做的是创建一个包含5个对象的向量。然后,我要做的是从一个输入文件中读取,该文件包含5个州的名称和不同税率。我想在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
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);