C++头文件声明的vector在cpp文件未识别,已加std::仍报错如何解决
问题原因
你遇到的undeclared identifier 'vect'报错,核心原因是.cpp文件中实现类成员函数时没有关联所属类的作用域,编译器将你写的add、print、combineLikeTerms识别为全局函数,自然无法访问Polynomial类内定义的私有成员vect。
修复方案
- 所有类成员函数实现前添加
Polynomial::前缀,绑定类作用域 - 同步修复原有代码里的语法错误:
combinedPoly.insert行缺少右括号
修复后完整Polynomial.cpp代码
#include "term.hpp" #include "Polynomial.hpp" #include<iostream> #include<map> using namespace std; // 无自定义逻辑的构造、析构函数补充空实现即可 Polynomial::Polynomial() {} Polynomial::~Polynomial() {} void Polynomial::add(Term t) { vect.push_back(t); } void Polynomial::print() { for(int i = 0; i < vect.size(); i++) { cout << vect[i].toString(); } } Polynomial Polynomial::combineLikeTerms() { Polynomial poly; map<int, int> combinedPoly; for(int j = 0; j < vect.size(); j++) { // 补充了原代码缺失的右括号 combinedPoly.insert(pair<int, int>(vect[j].getExponent(), vect[j].getCoefficient())); } for(map<int,int>::iterator itr = combinedPoly.begin(); itr != combinedPoly.end(); itr++) { Term newTerm(itr->second, "x", itr->first); poly.add(newTerm); } return poly; }
内容的提问来源于stack exchange,提问作者mad
相关产品推荐
相关产品推荐

