在bug中巩固C++

news/2024/11/19 18:52:38/文章来源:https://www.cnblogs.com/lichunlei/p/18555415

记录自己的各种报错,在错误中学习ing

结构体全局变量的声明与初始化问题
#include <iostream>
using namespace std;//声明一个结构体Books
struct Book{string name;string author;string subject;int id;//构造函数Book(string name, string author, string subject, int id):name(name), author(author), subject(subject), id(id){
}
}book1,book2;//打印
void printBookInfo(const Book& book)
{cout << "name: " << book.name << endl;cout << "author: " << book.author << endl;cout << "subject: " << book.subject << endl;cout << "ID: " << book.id << endl;
}int main()
{
book1=Book("C++ Primer", "Bjarne Stroustrup", "Programming", 101);
book2=Book("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);printBookInfo(book1);
printBookInfo(book2);return 0;
}

这段代码主要问题在于 Book 结构体的成员变量book1book2 的初始化方式上。
book1book2 是在全局范围内声明的变量,并且它们是结构体类型的实例,不能直接在声明之后使用赋值操作符进行初始化。
解决方法有两种
1.

在main函数外面声明并初始化
#include <iostream>
using namespace std;// 声明一个结构体 Book
struct Book {string name;string author;string subject;int id;// 构造函数Book(string name, string author, string subject, int id) :name(name), author(author), subject(subject), id(id) {}
} book1("C++ Primer", "Bjarne Stroustrup", "Programming", 101),book2("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);// 打印函数
void printBookInfo(const Book& book) {cout << "name: " << book.name << endl;cout << "author: " << book.author << endl;cout << "subject: " << book.subject << endl;cout << "ID: " << book.id << endl;
}int main() {// 已经在外部初始化了 book1 和 book2,直接调用打印函数即可printBookInfo(book1);printBookInfo(book2);return 0;
}
2.
在main函数中声明变量并初始化
#include <iostream>
using namespace std;// 声明一个结构体 Book
struct Book {string name;string author;string subject;int id;// 构造函数Book(string name, string author, string subject, int id) :name(name), author(author), subject(subject), id(id) {}
};// 打印函数
void printBookInfo(const Book& book) {cout << "name: " << book.name << endl;cout << "author: " << book.author << endl;cout << "subject: " << book.subject << endl;cout << "ID: " << book.id << endl;
}int main() {// 使用构造函数初始化 book1 和 book2Book book1("C++ Primer", "Bjarne Stroustrup", "Programming", 101);Book book2("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);// 调用打印函数printBookInfo(book1);printBookInfo(book2);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836939.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李继刚Lisp提示词灵感之源:压缩推动进步

探秘李继刚Lisp提示词压缩表达的灵感来源:德国计算机科学家尤尔根施密德胡伯提出,智能系统通过学习新技能来更高效地预测或压缩信息,这种内在动力推动了好奇心和创造力的发展,适用于从婴儿探索世界到科学家发现新规律的各种场景。前面在文章《 访谈李继刚:从哲学层面与大模…

java:找不到符号 符号:变量:log

原文链接:https://blog.csdn.net/zhanghaoninhao/article/details/129180810问题:java:找不到符号 符号:变量:log环境:springboot idea解决方法:在idea中,点击file-Settings,打开配置页面,如图红框位置,输入: -Djps.track.ap.dependencies=false

【SolidWorks 2024下载与安装教程】

‌SolidWorks 2024是一款由达索系统(Dassault Systemes)开发的三维CAD软件,广泛应用于机械设计、产品开发、工程设计、制造等领域。‌ 该软件以其强大的功能和易学易用的特点,深受工程师和设计师的喜爱。SolidWorks 2024在2024版本中引入了一系列新功能和改进,旨在提高设计效…

20222315 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1、实验内容 1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工…

编程命名规范(网文)

一个好的变量或函数命名,应该能起到自解释的作用,甚至能减少我们代码的注释。 naming-cheatsheet是一个命名备忘录,记录一些常见的规范约定,并提供简单的例子说明。如果能够严格遵守这些规范,相信我们的代码可读性会大大提升,下面就来介绍 naming-cheatsheet 提供的一些建…

MyBatis 学习笔记

MyBatis 执行器 JDBC 的执行过程分为四步:获取数据库连接(Connection) 预编译 SQL(PrepareStatement) 设置参数 执行 SQL(ResultSet)MyBatis 提供了执行器 Executor 将这一过程进行封装,对外提供 SqlSession 让用户通过调用其 API 直接操作数据库,因为 SqlSession 持有…

机器学习:线性回归

章节安排背景介绍 均方根误差MSE 最小二乘法 梯度下降 编程实现背景生活中大多数系统的输入输出关系为线性函数,或者在一定范围内可以近似为线性函数。在一些情形下,直接推断输入与输出的关系是较为困难的。因此,我们会从大量的采样数据中推导系统的输入输出关系。典型的单输…

20222322 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 掌握使用Metasploit和nmap等工具进行前期渗透的方法,并利用四种特定的漏洞对靶机进行攻击。 (1)掌握Metasploit和nmap的用法 学习并熟悉Metasploit框架的基本操作,包括模块搜索(Search)、使用(Use)、展示选项(Show)、设置参数(Set)以及执行攻击(Exploi…

ETL之kettle 专业陪伴群,1元开启kettle精进之旅

1、为啥收取1元? 确保只有真正感兴趣或有意愿的用户才会加入。减少无关人员的加入,保持群组的专业性和活跃度。 付费入群可以减少垃圾信息的发送,因为发垃圾信息的人不太可能愿意为发送广告付费。 2、送人玫瑰手留余香自从公众号连载了90+篇关于kettle的干活文章,不到半年时…

SpringBoot:SpringBoot集成E-mail邮件发送功能

前言今天做项目时有个需求是:用公司邮箱给客户发送邮件通知,然后上网冲浪找到一些不错的文章,通过优化并实现功能后,写这篇文章记录一下,也提供给大家做参考。 前期准备 在编写代码前,我们需要获取到一些信息用于后续邮件发送功能,需要获取的信息为:协议服务器地址、邮…

控制之美1-第七章 PID控制

目录7.1 引子7.2 比例控制 7.1 引子 \[7000 \frac{dx(t)}{dt}+10ax(t)=u(t)+d(t) \]\(u(t)\) 是体重变化, \(u(t)=E_i-E_a\), \(E_i\) 是热 量摄入 ,\(E_a\) 是运动消耗, \(x(t)\) 系统输出,体重 \(a\)是劳动强度系数 \(d(t)=-aC\) 是扰动量 进行拉普拉斯变换 \[7000(sX(s)-…