c++编译时遇到的错误总结(不定期更新,遇到问题就写在这里面)

1.不明确的符号,如图

const int max=100;


这是由于我声明了一个常量max,跟std命名空间中的max名称冲突了,编译器不能确定用的是哪个max,于是就报错不明确的符号。修改的话,把max改成Max就可以了。

2.char指针初始化问题,如图


编译时没有出现错误,当运行时会提示指针变量filename2没有初始化,我用它的时候是想着能随便往里面填若干个字符,大概意思就是一个没有设定长度的字符串。我需要对const类型的char *做初始化。如果使用动态数组,char *filename2=new char[256];就可以了。const对象必须初始化。

3.缺少类型说明符 - 假定为int。注意:c++不支持默认int

#include "stdafx.h"
#include <iostream>

using namespace std;

template<typename T>
class BClass
{
private:
	static int count;
	static long size;
public:
	static void set(int c, long s);
	static long GetSize()
	{
		return size;
	}
	static int GetCount()
	{
		return count;
	}
};
template<typename T>
BClass<T>::set(int c, long s)
{
	count=c;
	size=s;
}//<span style="color:#ff0000;">报错指向的位置</span>
template<typename T> int BClass<T>::count=0;
template<typename T> long BClass<T>::size=2;
int _tmain(int argc, _TCHAR* argv[])
{
	BClass<int> myclass;
	myclass.set(7,8);
	cout<<"count的值为:"<<myclass.GetCount()<<" size的值为:"<<myclass.GetSize()<<endl;
	system("pause");
	return 0;
}
认真观察,你会发现,我的这个成员函数在定义的时候没有加返回值类型。应该为:void BClass<T>::set(int c, long s)。

我刚还发现一个c++编译器的一个小特例,在主函数为int型返回值时候可以不用加return 0也不会报错,记住,这只是一个特列。
4. 
c++;对象引用前加const报错:不能将“this”指针从“const a”转换为“a &"

const对象不能访问非const成员函数。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值