C++学习问题记录

1、无法将参数“const char[]”转换成“char*”

参考文章
高版本的vs中会出现这个问题,我的vs版本是2019.
解决方案:
在【项目属性】窗口中的【C/C++】-【语言】-【符合模式】-改为【否】。
项目属性

2、关于C++中重载后置++和重载流插入运算符

参考链接
重载流插入原代码情况如下:

ostream& operator << (ostream& o, Point& p) {
	o << '(' << p._x << ", " << p._y << ')';
	return o;
}

main函数使用报错:

cout << p++ << endl;

在这里插入图片描述
没有与这些操作数匹配的“<<"运算符。
解决办法:
重载流插入代码改为:

ostream& operator << (ostream& o, const Point& p) {
	o << '(' << p._x << ", " << p._y << ')';
	return o;
}

分析原因:
p++是一个表达式,返回的是一个临时值,这个类型不可引用。
引用正常不能引用右值,C++11之后的右值引用&&除外,加了const就可以引用右值了,例如const int &a = 1是正常的,而int &a = 1是非法的

3、溢出报错

Line 1061: Char 9: runtime error: addition of unsigned offset to 0x7ffc7c7f77a0 overflowed to 0x

分析原因:
下标可能溢出或者小于0。
解决办法(举例):

int num=s.length();
for(int i=0;i<num;i++){
	switch(s[i]){
	case 'A':
		if(s[i-1] != 'B')
			num ++;
		break;
	}
}

此处会报错,可以更改为:

int num=s.length();
for(int i=0;i<num;i++){
	switch(s[i]){
	case 'A':
		if(i>0 && s[i-1] != 'B')
			num ++;
		break;
	}
}

4、expression is not assignable

分析原因:
可能是判断的时候“==”变成“=”了。

5、string类型赋值报错

原代码:

char c = "a";
stirng str="";
for(int j=0;j<5;j++){
	str[j]=c;
}

分析原因:
size无法自主扩展
解决办法:

char c = "a";
stirng str="";
for(int j=0;j<5;j++){
	str=str+c;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值