希望有人可以帮助初学者。我搜索过,但有些解决方案超出了我的知识范围。我试图创建一个函数,该函数将接收一个指向类对象的指针数组,并为每个对象输出getName()
函数。但我一直得到一个" 没有重载功能的实例"。我无法弄清问题是什么。请看下面的代码。
#include <iostream>
#include "Student.hpp"
#include <string>
using namespace std;
void getName(Student *studentArray[], int); //prototype
int main()
{
//Creates class objects with Constructors Name and Score
//Class object has a function getName() to return name
Student stud1("John", 100);
Student stud2("Mary", 90);
Student stud3 ("Jack", 85);
//Create an array of student objects
Student myArray[3]= {stud1, stud2, stud3};
//ERROR HERE NO INSTANCE OF OVERLOADED FUNCTON
getName(myArray, 3)
return 0;
}
void getName(Student *studentsArray[], int arraySize)
{
for(int index=0; index < arraySize; index++)
{
cout << studentsArray[index]->getName() << endl;
}
}
答案 0 :(得分:0)
Student *studentsArray[]
是一系列指向学生的指针:
[ - &GT; &#34; John&#34;, - &gt; &#34; Mary&#34;, - &gt; &#34;杰克&#34;]
虽然Student *studentsArray
是指向学生的指针(例如,数组中的第一个):
- &GT; [&#34; John&#34;,&#34; Mary&#34;,&#34; Jack&#34; ]
使用[]
运算符,您可以跳转到相对于指针
studentsArray[0] == (*studentsArray)
studentsArray[1] == *(studentsArray+1)
studentsArray[2] == *(studentsArray+2)
并且->
运算符是(*var).
问题是你创建了一个学生数组而不是一系列学生指针:
Student myArray[3] = {stud1, stud2, stud3};
实际应该是
Student* myArray[3] = { &stud1, &stud2, &stud3 };
以下是一个完整的工作示例:
#include <iostream>
#include "Student.hpp"
#include <string>
using namespace std;
void getName(Student *studentsArray[], int); //prototype
int main()
{
//Creates class objects with Constructors Name and Score
//Class object has a function getName() to return name
Student stud1("John", 100);
Student stud2("Mary", 90);
Student stud3("Jack", 85);
//Create an array of student objects
Student* myArray[3] = { &stud1, &stud2, &stud3 };
getName(myArray, 3);
return 0;
}
void getName(Student *studentsArray[], int arraySize)
{
for (int index = 0; index < arraySize; index++)
{
cout << studentsArray[index]->getName() << endl;
}
}
答案 1 :(得分:0)
最重要的是你的指针实际上并不指向任何现有变量或其地址。在这种情况下,指针将改为指向一个随机选择的存储单元地址,因此它真的很危险,因为你永远不知道它会导致什么,包括数据丢失,内存泄漏等等。
答案 2 :(得分:0)
使用find "$PWD"
,它将类似于:
std::vector