为了确保每个人都理解我的问题,我会在此处发布整个问题。
在编程示例选举结果中,对象候选列表 ,orderedArrayListType类型被声明为处理投票 数据。插入候选人数据和更新的操作 检索投票有点复杂。要更新 候选人的投票,我们从candidateList复制了每个候选人的数据 进入候选类型的临时对象,更新了 临时对象,然后替换候选人的数据 临时对象。这是因为数据成员的列表是a 候选列表的受保护成员,列表的每个组成部分是 私人数据成员。
在本实验中,您将修改编程示例选举 结果简化了对候选人数据的访问,如下所示:
从orderedArrayListType类中派生一个候选类ListList。
class candidateListType: public orderedArrayListType<candidateType> {
public:
candidateListType(); //default constructor candidateListType(int
size); //constructor
void processVotes(string fName, string lName, int region, int votes);
//Function to update the number of votes for a //particular candidate
for a particular region. //Postcondition: The name of the candidate,
the region, //and the number of votes are passed as parameters.
void addVotes(); //Function to find the total number of votes received
by //each candidate.
void printResult() const; //Function to output the voting data. };
因为类candidateListType是从类派生的 orderedArrayListType,list是该类的受保护数据成员 orderedArrayListType(继承自类arrayListType),列表 可以由候选列表类型的成员直接访问。
编写类的成员函数的定义 candidateListType。使用该类重写并运行您的程序 candidateListType。
这就是整个问题。在一些帮助之后,我已经完成了candidateListType类:
candidateListType:
class candidateListType: public orderedArrayListType
{
public:
candidateListType(); //default constructor
candidateListType(int size); //constructor
void processVotes(string fName, string lName, int region, int votes);
//Function to update the number of votes for a
//particular candidate for a particular region.
//Postcondition: The name of the candidate, the region,
//and the number of votes are passed as parameters.
void addVotes();
//Function to find the total number of votes received by
//each candidate.
void printResult() const;
//Function to output the voting data.
orderedArrayListType<candidateType>& cList;
std::orderedArrayListType<candidateType>::iterator it;
//default constructor
candidateListType :: candidateListType(){
cList = new orderedArrayListType<candidateType>(100);
}
//constructor
candidateListType :: candidateListType(int size){
cList = new orderedArrayListType<candidateType>(size);
}
//processing votes...storing objects
candidateListType :: void processVotes(string fName, string lName, int region, int votes){
candidateType temp;
temp.setName(fName,lName);
temp.setVotes(region,votes);
it = orderedArrayListType.end();
orderedArrayListType.insert(it,temp);
}
//priting total votes data
candidateListType :: void addVotes(){
for (it=orderedArrayListType.begin(); it!=orderedArrayListType.end(); ++it){
cout<<*it.printData();
}
}
//printing results
candidateListType :: void printResult(){
candidateListType temp;
int largestVotes = 0;
int sumVotes = 0;
int winLoc = 0;
int NO_OF_CANDIDATES = orderedArrayListType.end();
for (int i = 0; i < NO_OF_CANDIDATES; i++)
{
orderedArrayListType.retrieveAt(i,temp);
temp.printData();
sumVotes += temp.getTotalVotes();
if (largestVotes < temp.getTotalVotes())
{
largestVotes = temp.getTotalVotes();
winLoc = i;
}
}
orderedArrayListType.retrieveAt(winLoc,temp);
cout << endl << endl << "Winner: ";
string firstN;
string lastN;
cout << temp.getFirstName() << " " << temp.getLastName();
cout << ", Votes Received: " << temp.getTotalVotes() << endl << endl;
cout << "Total votes polled: " << sumVotes << endl;
}
};
但是我的主要驱动程序仍有问题。我试图将candidateListType放到我的主驱动程序但我不断收到错误。 这些错误是:
1&gt; c:\ users \ cal11.cpp(24):错误C2039:'orderedArrayListType':不是 'std'的成员 1&gt; c:\ users \ cal11 \ cal11.cpp(24):错误C2059:语法错误 :'&lt;'
这是我的主要推动因素:
http://www.mediafire.com/download/rcu864f0p1v3kbh/Main+Driver.zip
你能帮我解决这个问题吗? 谢谢!
答案 0 :(得分:0)
std::orderedArrayListType<candidateType>::iterator it;
您的自定义代码不是标准命名空间的一部分(或者至少它不应该是),因此删除命名空间前缀以进行读取
orderedArrayListType<candidateType>::iterator it;
或者如果您有自定义命名空间,
your_namespace_here::orderedArrayListType<candidateType>::iterator it;