问题描述
在学习案例的时候遇到一个知识点,顺手在源文件空白处编辑了一段,发现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
但的确解决了声明缺失的错误,说明思路正确
根本原因
函数外只能定义全局变量或者对象 ,而不能执行语句及调用函数 。
报错语句对变量进行了赋值操作,而本段代码是在函数之外
关于错误说明
错误说明中“此声明没有类型说明符”可以理解:编译器将该句识别为变量声明,正确格式为声明时赋值;
什么是“存储类”,现在不知道,继续学习,以后解答。