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成员函数。