不理解在这个例子中指针和类是如何协同工作的
Not understanding how pointers and classes work together in this example
嗯,我被这个问题难住了,使用Visual Studio 2012,我的项目只剩下一个错误,我非常想测试一下。是的,这是一个C++类,我希望我发布了足够的代码。
我得到错误:
->writeData左侧的C2227必须指向类/结构/联合/泛型类型
在上一个项目中,这一行有指针数组的元素(我假设是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)取消引用它,它会改变intellisense错误,但我仍然得到相同的结果:
->writeData左侧的C2227必须指向类/结构/联合/泛型类型
有想法吗?我感到困惑的是,employeePtrLIst是一个Employee指针,所以它可能在错误的类中查找?我想也许我没有正确地"指向"MyVector类中的函数?
感谢
如果不知道MyVector
是如何工作的,乍一看可能会出现一些问题:
.at()
可能返回对对象的引用(甚至是对象的副本),因此需要使用.
运算符。
另一种可能性是,如果.at()
返回类型为Employee*
的迭代器,则可能需要根据实现来取消引用迭代器(即(*employeePtrList.at(i))->writeData(outputEmployee);
)。
相关文章:
- 我不明白参数和参数如何协同工作
- Qt C++括号匹配和突出显示当前线路功能无法协同工作
- scanf() 语句中"%*[^n]"的格式字符串指示什么?分配抑制器 (*) 和否定扫描集 ([^) 如何协同工作?
- Emrun 和无头铬 - 如何让这两者协同工作?
- 如何编译Freetype(2)和Harfbuzz(带有Visual studio)使它们协同工作?
- 模板类实例化如何与类继承协同工作
- 如何将RegisterDragDrop,RoInitialize组合在一个线程中协同工作
- 如何让助推upgrade_to_unique_lock+condition_variable协同工作
- Fruchterman-Reingold的吸引力是如何与Boost图库协同工作的
- 如何使Ws2_32.lib与针对Windows 8.1的VS 2013项目协同工作
- 如何在C++中使一个void函数与另一个void功能协同工作
- std::transform 和 std::p lus 如何协同工作
- 无法让 cgal 和 hdf5 协同工作
- std::ref 和交换功能似乎不能很好地协同工作
- 类的详细信息:设计一组协同工作的类时出错
- 如何使这两个模板类协同工作?(C++中的属性)
- 有什么方法可以让谷歌测试框架与Visual Studio 6协同工作吗
- c++如何使双语句sql与OLEDB协同工作
- Gurobi和c++ -如何使用Clion协同工作
- 不理解在这个例子中指针和类是如何协同工作的