C++ 常见编译错误及解决方法

本文解析了C++编程中常见的错误,如使用花括号而非构造函数初始化对象、变量定义时的不当初始化方式以及二维数组作为函数参数时的正确用法等。还介绍了编译错误如undefined reference的具体原因及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.[Error] in C++98 ‘box1’ must be initialized by constructor, not by ‘{…}’

vector初始化问题: CBox box1 ={78.0,24.0,18.0}; 改成 CBox box1 (78.0,24.0,18.0)

或者开启编译选项 -std=c++11

  1. 变量定义的问题:

例如:想要定义三个整型变量,初始化为0;

int a, b, c=0;这样不对!!!

int a, b, c; a=b=c=0; 这样可以!

int a=0, b=0, c=0; 这样可以!

  1. 二维数组作为函数参数时必须注意:

将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小;

原因:这是由编译器原理限制的。事实上,编译器是这样处理数组的:

  对于数组 int p[m][n],如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为:

     p + i*n + j;//注意n!!

     这里如果省略了第二维或者更高维的大小,编译器将不知道如何正确的寻址!!!

正确写法:

void function(int p[][n])

void function(int p[m][n])

void function(int p[][])这样不可以

  1. makefile编译出错: undefined reference to ‘RBF()’

collect2: error: ld returned 1 exit status

一开始以为是makefile写的依赖关系出错,但后来发现竟然是RBF这个函数的声明和定义里的参数不一样,有没有&都会报错,要统一;

--------(不断更新中)

日积月累,滴水穿石

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值