最近我在使用网络编程之后一直在学习C ++,到目前为止,通过cplusplus教程的工作进展顺利。我正在努力解决的一件事是使用引用数据结构中的对象的指针。基本上是:
string mystr;
movies_t amovie; // create new object amovie from structure movies_t
movies_t* pmovie; // create a new pointer with type movies_t
pmovie = &amovie; // reference address of new object into pointer
cout << "Enter movie title: ";
getline(cin, pmovie->title);
cout << "Enter year: ";
getline (cin, mystr);
(stringstream) mystr >> pmovie->year;
cout << endl << "You have entered:" << endl;
cout << pmovie->title;
cout << " (" << pmovie->year << ")" << endl;
可以像以下一样轻松地编写:
string mystr;
movies_t amovie;
cout << "Enter movie title: ";
getline(cin, amovie.title);
cout << "Enter year: ";
getline(cin, mystr);
(stringstream) mystr >> amovie.year;
cout << endl << "You have entered:" << endl;
cout << amovie.title;
cout << " (" << amovie.year << ")" << endl;
我理解它们在数组中的用法,但我很难理解为什么使用指针比从结构中引用值本身更好。
答案 0 :(得分:2)
我理解它们在数组中的用法,但我很难理解为什么使用指针比从结构中引用值本身更好。
他们不是。如果您无法直接引用变量(例如因为要引用的值可能会更改),则仅使用指针
。除此之外,你在这里使用C风格的演员肯定是有创意的。但是不要这样做。 C-style casts are generally not acceptable in C++。在这里使用static_cast
:
static_cast<stringstream>(mystr) >> amovie.year;
或至少使用函数式转换:
stringstream(mystr) >> amovie.year;
...但实际上整行代码(包括mystr
的声明)完全没用。只需直接读取值:
cout << "Enter year: ";
cin >> amovie.year;