鱼额宝 之 error LNK2001: 无法解析的外部符号 之 静态数据成员的定义

支付宝开放平台C++方式接入 https://github.com/ArthasModern/AlipayOpenapiCpp 该项目为C++项目,包含访问支付宝开放平台(Openapi)网关的源码; /** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ **/ 工程中有两个项目文件: Openapi.pro为QtCreate 阅读详情

C5-1 “鱼额宝”

题目描述

请实现一个“鱼额宝”类,下面已给出代码模板,请根据main函数中对该类的操作,补充类实现部分完成代码。

“鱼额宝”类可以记录账户余额、存钱、取钱、计算利息。该类中有一个私有静态成员变量profitRate存储“鱼额宝”的利率,可以用共有静态成员函数setProfitRate修改利率的值。程序输入为第1天至第n天连续n天的账户操作,每天只能进行一次账户操作,或存或取,每一天产生的利息是前一天的账户余额与“鱼额宝”利率的乘积,产生的利息当天也将存入账户余额,由于第1天之前账户不存在,所以第1天一定是新建账户并存钱,且当天不会有利息存入余额。程序在接受n天操作的输入后,要求计算出第n天操作完成后的账户余额并输出。代码如下:

#include <iostream>
using namespace std;
  
class Yuebao
{
static double profitRate;
public:
    static void setProfitRate(double rate);
/* Your code here! */
};
  
int main()
{
    int n;
    while(cin >> n)
    {
        double profitRate;
        cin >> profitRate;
        Yuebao::setProfitRate(profitRate);//设定鱼额宝的利率
        Yuebao y(0); //新建鱼额宝账户,余额初始化为0
        int operation;//接受输入判断是存还是取
        double amount;//接受输入存取金额
        for (int i = 0; i < n; ++i)
        {
            y.addProfit();//加入前一天余额产生的利息
            cin >> operation >> amount;
            if (operation == 0)
                y.deposit(amount);//存入金额
            else
                y.withdraw(amount);//取出金额
        }
        cout << y.getBalance() << endl;//输出最终账户余额
    }
    return 0;
}

 

输入描述

每个测例共 n+2 行

第 1 行输入一个整数 n ,表示接下来有 n 天的操作

第 2 行输入一个实数,为 “ 鱼额宝 ” 的利率, n 天中利率不变

接下来有 n 行,代表 n 天的操作,每行有 2 个数,第 1 个数或 0 或 1 , 0 表示存钱, 1 表示取钱,第二个实数为存取的金额

1 <= n <= 20

 

输出描述

对于每一个测例,输出第n天操作完成后的账户余额

 

样例输入

 

3
0.1
0 10
0 10
1 10

样例输出

13.1
#include <iostream>
using namespace std;

class Yuebao
{
	static double profitRate;
	double balance;
public:
	Yuebao(double money) {
		balance = money;
	}
	static void setProfitRate(double rate) {
		profitRate = rate;
	}
	/* Your code here! */
	void addProfit() {
		balance *= 1 + profitRate;
	}
	void deposit(double money) {
		balance += money;
	}
	void withdraw(double money) {
		balance -= money;
	}
	double getBalance() {
		return balance;
	}
};

double Yuebao::profitRate = 0;

int main()
{
	int n;
	
	while (cin >> n)
	{
		double profitRate;
		cin >> profitRate;
		Yuebao::setProfitRate(profitRate);//设定鱼额宝的利率
		Yuebao y(0); //新建鱼额宝账户,余额初始化为0
		int operation;//接受输入判断是存还是取
		double amount;//接受输入存取金额
		for (int i = 0; i < n; ++i)
		{
			y.addProfit();//加入前一天余额产生的利息
			cin >> operation >> amount;
			if (operation == 0)
				y.deposit(amount);//存入金额
			else
				y.withdraw(amount);//取出金额
		}
		cout << y.getBalance() << endl;//输出最终账户余额
	}
	return 0;
}

TIPS:

出现

 error LNK2001: 无法解析的外部符号 "private: static double Yuebao::profitRate" (?profitRate@Yuebao@@0NA)

错误的原因是静态数据成员Yuebao::profitRate要在类外、主函数前进行初始化,在main前加入

double Yuebao::profitRate = 0;

即可。

 

有一个疑问:while(cin>>n){} 是如何退出的?

VC++6.0项目精讲:从Win32到MFC,掌握Windows桌面开发核心 Windows桌面应用程序开发的核心在于理解其底层运行机制,这通常涉及对Windows API的调用、消息循环的处理以及运行时库的依赖。消息循环是Windows程序的心脏,它负责从系统队列中获取并分发用户输入和系统事件,驱动程序运行。动态链接库(DLL)和运行时库(如MSVCRT)的管理则是确保程序可移植性和部署成功的关键技术,它们解决了代码复用和依赖问题,这也是现代应用(如Flutter桌面端)打包时仍需处理VC++库依赖的根本原因。掌握这些原理,对于维护遗留系统或理解现代框架的底层封装都极具价值。本文将 阅读详情

相关推荐

手把手教你玩转AT32F403A位带操作:像51单片机一样控制GPIO

本文详细介绍了如何在雅特力AT32F403A国产MCU上实现位带操作,像51单片机一样高效控制GPIO。通过实战演示和性能对比,展示了位带操作在实时控制中的优势,包括更快的执行速度和更低的延迟,特别适合工业控制和电机驱动等场景。

weixin_29234509的博客 285

“鱼额宝”

题目描述 请实现一个“鱼额宝”类,下面已给出代码模板,请根据main函数中对该类的操作,补充类实现部分完成代码。 “鱼额宝”类可以记录账户余额、存钱、取钱、计算利息。该类中有一个私有静态成员变量profitRate存储“鱼额宝”的利率,可以用共有静态成员函数setProfitRate修改利率的值。程序输入为第1天至第n天连续n天的账户操作,每天只能进行一次账户操作,或存或取,每一天...

weixin_33813128的博客 290

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1622

error LNK2001: 无法解析的外部符号 "private: static"

error LNK2001: 无法解析的外部符号 "private: static" 在头文件的类中定义了static变量,则要在cpp文件中对其进行初始化。 若为模板类,还需保存模板格式。 .h template<class E> class linkedBinaryTree :public binaryTree<binaryTreeNode<E>> { pr...

weixin_43995624的博客 3351

Materials Studio与LAMMPS联合作战:如何用msi2lmp.exe完美转换聚合物模型(含PCFF力场配置)

本文详细解析了如何利用msi2lmp.exe工具将Materials Studio中的聚合物模型高效、准确地转换为LAMMPS可识别的data文件,并重点配置PCFF力场。文章提供了从MS模型构建、文件导出到命令行转换、参数调整及转换后验证的全流程实战指南与避坑技巧,旨在帮助研究者解决模型转换中的常见问题,实现跨平台分子动力学模拟的无缝衔接。

weixin_29228781的博客 521

张正友标定法-MATLAB实验

该方法最早由微软研究院的Zhengyou Zhang教授提出,1998年发表在IEEE TRANSACTIONS ON PATTERNANALYSIS AND MACHINE INTELLIGENCE,论文题目为:AFlexible New Technique for Camera Calibration。 (一)标定平面到图像平面的单应性 单应性(homography):在计算机视觉中被定义

qq_37845624的博客 8290

error LNK2001: 无法解析的外部符号 “private: static int Student::total_count“ (?total_count@Student@@0HA)

链接的时候出现了问题。这个是因为静态变量没有初始化。 出现该问题的程序如下: #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <fstream> #include <set> #include <map> #include <algorithm> using namesp.

uiop_uiop_uiop的博客 1336

荔枝派Nano内核编译

上文编译好uboot之后,想刷内核和根文件系统进去。其实官方的网盘里面,已经有打包好的系统镜像,包含所有的东西,可以直接烧录进flash或者TF卡,但是都是基于winbond芯片的,国产的xt25f128b刷进去妥妥的。所以没办法,只能自己再动手重新编译内核了。(PS:搞的我都想直接买一片w25q128换上了,有点麻烦,希望官方直接涨价或者出两版就行,不然对新手不友好啊)

木子点灯的博客 548

静态数据成员

【静态存储: 关键字extern和static说明静态存储变量和函数标识符。全局说明的标识符默认为extern。 如果这两个关键字用于说明变量,程序在开始执行时就分配和初始化空间;如果用于说明函数,表示从程序执行开始就存在这个函数名。 尽管标识符被说明为静态时,程序一开始执行就存在,但不等于它们在整个程序中可用。用static说明的局部变量只能在定义该变量的函数体重使用。与自动变量不同的是,sta...

weixin_43971752的博客 1139

从询价到回款:一篇讲透 SAP SD 销售与分销的实战入门指南

摘要: SAP SD(Sales and Distribution)模块是SAP ERP中管理销售与分销的核心组件,贯穿从订单到回款(Order-to-Cash)的全流程。其核心价值在于将销售业务结构化,通过主数据(客户、物料、定价)和交易单据(订单、交货、发票)实现流程可审计、可自动化。SD模块与物流(MM)、生产(PP)、财务(FI)深度集成,涵盖定价策略、信用控制、发运管理、国际贸易等复杂场景。关键设计包括条件技术(Condition Technique)实现灵活定价,单据流(Document Flo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 260

手把手教你学simulink(57.3)--电励磁同步电动机场景示例:基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论需求分析电励磁同步电动机(Electr

MHD0815的博客 505

LNK1120/2001 无法解析的外部命令

源代码: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class client { private: static string servername; static int clientnum; public: client(int a) { cout &lt;&lt; "输入客户数量...

Syou的博客 2128

机器人常用坐标系详解:原理、获取方法及实战实例

本文系统阐述了机器人四大核心坐标系(世界、基、工具、工件)的原理与标定方法。世界坐标系提供全局参考基准,基坐标系绑定机器人本体,工具坐标系定义末端执行器位置,工件坐标系则锁定作业对象位置。通过齐次变换矩阵实现各坐标系间的关联转换。重点介绍了三类标定技术:手动设定法(世界坐标系)、三点/六点法(工具TCP标定)和视觉识别法(工件标定),并以工业机械臂上下料为例演示了完整应用流程。随着技术发展,自动化标定、动态坐标系等新趋势将进一步提升机器人作业精度与效率。

start_up_go的博客 515

问题error LNK2001: unresolved external symbol "public: static class解决

错误提示: ...error LNK2001: unresolved external symbol "public: static class A obj...

ActionReaction的专栏 4947

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

error LNK2001: 无法解析的外部符号 "public: static ......"

error LNK2001: 无法解析的外部符号 "public: static ......" 今天练习类的编程时遇到的问题,源自静态变量的初始化问题。 下面是对static的一点讲解  ===============================================    静态数据成员的使用方法和注意事项如下:    1、静态数据成员在定义或说明时前

Shadow的专栏 4062

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【C++ static】关于 error LNK2001: unresolved external symbol "public: static class CString 错误处理

错误提示: PropertyPageXiWeiXinXi.obj : error LNK2001: unresolved external symbol "public: static class CString CPropertyPageXiWeiXinXi::m_strstaticfilepath" (?m_strstaticfilepath@CPropertyPageXiWeiXinX

ly930156123的博客 5841

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

error LNK2001: 无法解析的外部符号 "public: static int Pe...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881050的博客 901

LNK2019 unresolved external symbol symbol referenced in function

未解析的外部符号'在功能'函数'中引用的“符号” 该函数的已编译代码对symbol进行引用或调用,但是链接器在要链接的任何库或目标文件中都找不到符号定义。 此错误消息后跟致命错误LNK1120。要修复错误LNK1120,必须首先修复所有LNK2001和LNK2019错误。 可能的原因 有很多方法可以解决此错误。所有这些都涉及对链接器无法解析的函数或变量的引用,也无法为其找到定义。编译器可以识别没有声明符号的时间,但是不能识别没有定义符号的时间。那是因为定义可能在不同的源文件或库中。如果...

逆风飞翔的博客 3540

C++ LNK2005链接错误根源与实战排雷指南

LNK2005是C++多文件项目中典型的链接时符号重复定义错误,源于翻译单元模型与One Definition Rule(ODR)的冲突。其本质并非编译问题,而是全局变量、非inline函数或静态成员在头文件中被多次定义,导致多个.obj文件包含同一符号。该错误高频出现在新手工程化转型、第三方库集成及旧代码重构场景,直接影响可执行文件生成。掌握extern声明、inline函数、constexpr常量、static linkage等核心机制,结合dumpbin符号分析与三步定位法,可系统性规避和修复。本文聚

weixin_34059951的博客 203

C++普通变量、C++静态成员变量、C++成员常量、C++静态成员常量的初始化方法

    最近复习C++的一些知识,遇到了一个我比较容易混淆、傻傻分不清的知识点,那就是C++的变量的类型初始化或赋初值,大致有普通成员变量、静态成员变量、成员常量这三种,还有一种组合的静态成员常量。    看到这几种数据成员时很尴尬,经常就把某两种搞混了,所以为了方便和好理解,在前辈的基础上做个小总结。    为了直观简洁的呈现这种对比,采用代码对比的方式完成这个事情。包括四种数据成员,进行四种初...

buknow的博客 6197

VS error及解决方法

1.    error:   0xC00000FD: Stack overflow       解决方法:将“项目属性、链接器、系统、堆栈保留大小”设大一点比如16000000     原因:当程序的静态数据量比较大时,可能会出现栈溢出问题,程序还没有运行就会直接报错,这是由于系统分配给程序的栈空间太小。   “堆栈保留大小”是指程序堆和栈的最大增长是多少,比如65536表示堆栈最大可增长到64K...

fignting_formyself的博客 1052

026静态成员变量和静态成员函数

/* 定义静态成员变量 1、关键字 static 可以用于说明一个类的成员 2、静态成员提供了一个同类对象的共享机制 3、把一个类的成员说明为 static 时,这个类无论有多少个对象被创建, 这些对象共享这个 static 成员 4、静态成员局部于类,它不是对象成员 */ #if 1 class counter { static int num; //声明与定义静态数据...

吾竹清风2017 274

Windows下用VC++命令行编译c(cl.exe)

最近在用Cython引用c函数时,经常需要将c编译为静态数据连接库(.lib文件)。踩了一些坑现在都记下来。搞清楚坏境编译前需要搞清楚自己的编译环境,对于64位需要使用VC 64位命令行提示符。我的环境是: - Windows 7 64-bit - Visual studio 2017 所以我使用64位命令提示符。不要用普通的命令行编译,那样很多库和头文件会找不到。 我使用的是VC 2017

南山 3972

error LNK2005:XXXX already defined in XXX.lib

 ==============================================================The problem was because of different Run-Time library settings.当前工程和Lib工程使用的Run-Time library 不一致。 这些选项选择单线程或多线程运行时例程,指示多线程模块是否为

ray_zhang_3的专栏 637

C++类前宏定义:头文件守卫、动态库导出与框架契约详解

在C++大型工程实践中,预处理器宏是实现模块化、控制符号可见性和管理编译依赖的核心工具。其基本原理是通过条件编译,在预处理阶段对源代码进行选择性包含或替换,从而解决工程中的实际问题。这一技术对于构建可维护、可复用的软件至关重要,尤其在动态链接库开发和跨平台项目中。通过头文件守卫宏,可以有效防止因重复包含导致的编译错误;借助导出导入宏,可以精确控制动态库中类与函数的可见性,实现模块间的清晰接口。在框架开发中,宏还能为代码生成工具提供元信息,赋予类额外的能力,如Qt的信号槽机制。本文聚焦于C++类前宏定义,深入

weixin_34037173的博客 662

vs error LNK2005:XXXX already defined in XXX.lib

The problem was because of different Run-Time library settings. 当前工程和Lib工程使用的Run-Time library 不一致。 这些选项选择单线程或多线程运行时例程,指示多线程模块是否为 DLL,并选择运行时库的发布版本或调试版本。 选项说明 /MD 定义_MT和_DLL以便同时从标准 ...

weixin_34161029的博客 122
上一篇: 学堂在线 c++基础 之 C4-3 一元二次方程求解
下一篇: 关于c++中的左值和右值
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值