【发布时间】:2014-04-10 21:54:33
【问题描述】:
嗯,我被这个难住了,使用 Visual Studio 2012 我的项目只剩下一个错误,我很想测试它。是的,它适用于 C++ 类,我希望我发布了足够的代码。
我得到错误:
C2227 left of ->writeData 必须指向 class/struct/union/generic 类型
在上一个项目中,这一行包含指针数组的元素(我假设为 Employee* 指针),它的工作方式如下:
Employee* myEmployees[MAX_EMPS];
...
myEmployees[i]->writeData(outputEmployee);
所以我实现了一个 Employee* 的向量,并假设它还包含指针:
MyVector<Employee*> employeePtrList;
我稍微间接地做了接下来的几个步骤,但已经与 Debry 教授清除了这一点:
Employee* empPtr1 = new HourlyEmployee(EMP1_ID, EMP1_NAME, EMP1_ADDRESS, EMP1_PHONE, EMP1_HOURS, EMP1_WAGE);
2...
3...
4...
employeePtrList.push_back(empPtr1);
2...
3...
4...
然后在程序的后面,这一行给了我错误:
employeePtrList.at(i)->writeData(outputEmployee);
我尝试了各种方法,如果我只是为了好玩而用 *(employeePtrList) 取消引用它会改变智能感知错误,但我仍然得到相同的结果:
C2227 left of ->writeData 必须指向 class/struct/union/generic 类型
有什么想法吗?我被难住的地方是了解 employeePtrLIst 是一个 Employee 指针,所以它可能在错误的类中寻找?我想也许我没有正确“指向” MyVector 类中的函数?
谢谢
【问题讨论】:
-
employeePtrList.at(i)返回什么? -
如果你在理论上问,我会假设一个指向 Employee 类的指针,实际上这不会运行。我想我需要弄清楚如何形成它,以便它从存在成员函数的 MyVector 类中返回一些东西?
-
什么是MyVector真的是带有.at函数的向量吗?
-
将您的示例缩小为演示问题的最小可运行代码并将其发布。您甚至可能在这样做时自己发现问题。
-
这是一个以 .at 作为成员函数的类,是的。它就像一个带有 push_back 函数以及 getter 和 setter 的向量。
标签: c++ arrays class pointers dereference