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

C++复数类实现与GTest测试报错问题求助

复数类实现的两个问题解决办法

问题1:头文件找不到(lib/Complex.hpp: No such file or directory)

原因

编译测试文件时,编译器无法定位指定路径下的Complex.hpp。虽然Complex.cpp里的#include "lib/Complex.hpp"正常,说明Complex.cpp与lib目录同级,但测试文件的位置可能不同,或是编译命令未指定头文件搜索路径。

解决办法

两种常用方案:

  • 调整include路径:若测试文件与lib目录同级,保留#include "lib/Complex.hpp"即可;若测试文件在子目录(如tests目录),则改为#include "../lib/Complex.hpp"。
  • 编译时指定搜索目录:用-I参数告知编译器头文件位置,假设lib目录在当前工作目录下,编译命令可写为:
    g++ -I./lib test.cpp Complex.cpp -o test -lgtest -lgtest_main
    

问题2:a.real()调用参数不足(too few arguments in function call)

原因

你定义的real是类的成员函数,但错误地为它添加了Complex类型参数。成员函数通过this指针就能访问当前对象的成员变量,无需额外传参。现在调用a.real()未传参,与函数定义的参数要求不匹配,因此报错。

解决办法

修改Complex.hpp和Complex.cpp中的real函数:

  1. 头文件Complex.hpp中,修改函数声明:
    double real();      // 返回当前复数的实部
    
  2. 实现文件Complex.cpp中,修改函数实现:
    double Complex::real(){
        return this->re; // 直接返回当前对象的re成员
    }
    

修改后,ASSERT_FLOAT_EQ(a.real(), 0)即可正常调用,获取a的实部并与0比较。

内容的提问来源于stack exchange,提问作者A02

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:20:28