我想知道在初始化时是否可以返回指针。我知道我们可以使用string s("Hi")
来声明和初始化string s
,但我们可以对指针执行相同的操作吗?
我尝试做的是尽可能减少我的代码以尝试优化我的代码,因此我尝试queue<string> *p(&item)
其中item
是queue<string>
。这有效;但是,添加return
会导致错误&#34; *&#34;之前的预期主要表达式。
我的代码段:
struct parsedObj
{
queue<string> item;
bool operator!() {return !item.empty();}
queue<string>* operator*() {return queue<string> *p(&item);}
};
答案 0 :(得分:1)
我想知道在初始化时是否可以返回指针
您始终初始化返回值。没有办法不初始化它。 (好吧,你可能忘记写一下return语句,但这会使程序格式错误。)
但我们可以为指针做同样的事情吗?
是
在*&#34;。
之前添加返回结果错误&#34;预期的primary-expression
此限制也适用于非指针。例如,你不能写return string s("Hi")
。
return语句的语法是attr(optional) return expression(optional)
。声明不是表达。 string s("Hi")
和queue<string> *p(&item)
是声明。
只需使用
return &item;
返回指针。没有必要在该函数中声明任何变量。
PS。从间接运算符返回指向成员的指针似乎很不正常。传统上,间接运算符执行相反的操作(即间接的操作数是指针,结果是指向的对象)。
答案 1 :(得分:0)
我使用了它而不是使用指针来完成工作:
queue<string>* operator->() {return &item;}
这不是解决方案,这只是一个提示。现在我可以使用parsedObj->
来简化流程。