size用const int定义,但为什么会显示size不明确?

#include<iostream>
using namespace std;
const int size=20;             // 为什么会size不明确?
struct Student
{
 char firstname[size];
 char lastname[size];
 char grade;
 int age;
};
void display(Student);
int main()
{
 Student stu;               //创建结构变量
 cout << "What is your first name?";
 cin.getline(stu.firstname, size);
 cout << "What is your last name?";
 cin.getline(stu.lastname, size);
 cout << "What letter grade do you deserve?";
 cin>>stu.grade;
 cout << "What is your age?";
 cin >>stu.age;
 display(stu);
 return 0;
}
void display(Student information)
{
 cout << "Name:" << information.lastname << " , " << information.firstname << endl
  << "Grade:" << char(information.grade+1) << endl
  << "Age:" << information.age << endl;
}

xungeer29
浏览 5609回答 4
4回答

onemoo

这个代码应该没有太大的错误。你说的“显示size不明确”是什么意思?  是哪里显示的??

onemoo

我再多说几句,不推荐用 using namespace std; 写法。你知道C++标准库中的符号都是定义在std命名空间中的,使用它们时必须在前面写上std::来指明命名空间。有时候觉得每次都这样写很麻烦,就用 using namespace std;  这样就可以省下写名字前面的std::。但这样做等于将 std 中的名字都暴露了出来! 如果你程序中用了和标准库中同样的名字就会发生命名冲突。要知道标准库中的名字是非常多的,要完全避免使用是很难的。原本C++中引入命名空间就是为了避免命名冲突! 它把所有标准库里的名字都放入std中,虽然在使用库中符号时会有些麻烦,但就不会和你自己程序中的名字冲突了。而你写 using namespace std; 等于违背了命名空间的初衷。  你这个例子就是在无意中引起了命名冲突。一般建议使用标准库中符号时都要明确写上 std::如果真的想要少写 std::,那么推荐另一种写法:using std::cout;using std::cin;像这样明确指出想简写的名字,只把这几个名字从std命名空间中暴露出来。这样你仍然可以在代码中直接使用 cout 和 cin。 而你再定义 size 也不会有问题(库中的 size 还在 std 中,不会和这个冲突)。

onemoo

VS 中 C2872 错误是指在命名检查时发现歧义。这里也就是指 size 这个名字发生命名冲突。这有可能是与<iostream>里标准库中的命名冲突了。 不过这一点我很奇怪,我知道的 std::size 是在<iterator>中的。  也许 VC 的<iostream>中也有叫 size 的吧。你可以试试用下面方法解决:要么,把这个变量改为别的名字(别用size)要么,去掉上一行的 using namespace std;。 在代码中用到标准库中的名字时都在前面加上 std::,如 std::cout   std::cin用上述两种方法的任何一种都可以,再看看还会不会报这个错。

慕的地8582982

VRODGDMIRTDVRGIKFCTCLHLHJMIEGJEBQJSCZVEVRAWFENWSPYWSNQMHXNXGWSCXAWUKFODMJGBXNSAQTCLIEGIDIDMBROKHIXNIKIYIQZWSUKUKNJTWSUXGCCYBKNPZVQGWPENXGPYNJMBUJFVYCEUDTWFBKMPFPSHXGADSIKUWTPSHQSUXGRAWWZBEYULHQZOXNWBQFHETJMOXASBWTVETPYUKHQGCLHKHWMIZHXTVYBKMCEPRILHYOKMNQDZIENQMHDFIQGORIRUWFBETPLNWGPYLBXENJLVRBXMORNWLOEOKSHKGCEAVYFVRZJLUWLBLAWMUQGGCMPMCYTVEUFBYNQGVQZDFFODFOKACEHDTCWSBRORNJFJRVKHQNJXTPVDGCLVRTIQZZURMPFVXGPLLSUQTQAXGCYUDLBRNJSHDTSBWZUDGPKGPJFHJTVSHCMBAWYUDGWFNDFQMILIRVRNPDIYTCYPZPEUIKTCEZVKTVLHOQYIKOLNWMBSBXNPGCYTJMTWADTDTVRTJZOEMQMPYTJZWYMVEOYCKHJHJZDHJSUQZVZBEBXMUXSIXWLHXMXTVDOKYHWFOKBLHWRKTCRNEGDZTCGIRVXHQFVEFAJMILAELNDSHWLHKZCYFVXQFBVLHDGPFAOHUYUFWTJPFKHGSSVLSOXNLEQNXELEQQALYOBBKDTZTSMZDDENYHXHNZDPZPGNRERAGIIKUNVIOYLUDBUFYREKTTXDCJEEUQTDZANODXNWGTMCWFOOFOYWIIOYJYVVYQWZZPAHWPJXQTSCSKANADDNDSCUOZMPGZPKDNAMZLIVMVCHHPVFHBOOYLHRZKGCLVRTDGJFNJLULJYBJGCTORNJHJLOQTPYTQBRUENDG
打开App,查看更多内容
随时随地看视频慕课网APP