有人可以帮我上这堂课吗?

时间:2016-04-22 04:56:22

标签: c++ class std

为了确保每个人都理解我的问题,我会在此处发布整个问题。

  

在编程示例选举结果中,对象候选列表   ,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

你能帮我解决这个问题吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

std::orderedArrayListType<candidateType>::iterator it;

您的自定义代码不是标准命名空间的一部分(或者至少它不应该是),因此删除命名空间前缀以进行读取

orderedArrayListType<candidateType>::iterator it;

或者如果您有自定义命名空间,

your_namespace_here::orderedArrayListType<candidateType>::iterator it;