问题描述

在学习案例的时候遇到一个知识点,顺手在源文件空白处编辑了一段,发现vs开始报错

严重性 说明
错误(活动) 此声明没有存储类或类型说明符

在函数体外进行赋值的时候就会出现这个问题。

比如

out_type convert(const in_value& t) {
	//sample1
	stringstream stream;
	stream << t;
	out_type result;
	stream >> result;
	return result;
	
}
	//sample2
	double d;
	string salary;
	string s = "12.56";
	d = convert<double>(s);
	salary = convert<string>(9000.0);
	std::stringstream sstream(s);

在倒数2、3行的变量d和salary就会出现这个错误。

解决办法就是把这段代码,改到函数体内部。

out_type convert(const in_value& t) {
	//sample1
	stringstream stream;
	stream << t;
	out_type result;
	stream >> result;
	return result;
	
	//sample2
	double d;
	string salary;
	string s = "12.56";
	d = convert<double>(s);
	salary = convert<string>(9000.0);
	std::stringstream sstream(s);
}

这里代码应用了模板,又放回模板定义内,并没有报错,我们先不管这段代码有没有bug
但的确解决了声明缺失的错误,说明思路正确

根本原因

函数外只能定义全局变量或者对象 ,而不能执行语句及调用函数 。

报错语句对变量进行了赋值操作,而本段代码是在函数之外

关于错误说明

错误说明中“此声明没有类型说明符”可以理解:编译器将该句识别为变量声明,正确格式为声明时赋值;

什么是“存储类”,现在不知道,继续学习,以后解答。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐