You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 00:48:01