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

如何将C++ ForceSolver类的函数计算结果传递给FrictionContact类

问题核心

你现有代码输出异常的根本原因是:子类对象创建后,没有先调用父类继承来的solveSystem()方法完成force变量的计算赋值,直接访问的force是未初始化的垃圾值。
由于你使用的是公有继承,父类ForceSolver的所有public成员(包括force变量、solveSystem()方法)都会被FrictionContact子类直接继承,不需要额外写值传递逻辑,只要保证force被计算完成后再使用即可。

实现方案

提供两种常用实现方式,按需选择即可:

方案1:显式调用计算方法

直接在main函数中使用printForce前,先调用继承来的solveSystem方法计算force值,修改后的main函数代码如下:

#include <iostream>
// 记得引入两个类的头文件
int main()
{
    FrictionContact contact;
    // 先执行父类继承的求解方法,计算得到force=10
    contact.solveSystem();
    std::cout << std::endl; // 换行分隔父类的输出
    contact.printForce();
    return 0;
}

方案2:子类构造自动计算

如果希望force在子类对象创建后自动完成计算,不需要用户手动调用方法,可以在子类的构造函数中调用solveSystem(),修改后的FrictionContact类代码如下:

class FrictionContact : public ForceSolver
{
public:
    FrictionContact() {
        // 对象构造时自动执行force计算
        solveSystem();
    }
    void printForce();
};

void FrictionContact::printForce()
{
    std::cout << "获取到的force值为:" << force;
}

此时main函数不需要修改,直接运行即可得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:24:00