初始化时返回一个指针? C ++

时间:2018-03-27 10:02:49

标签: c++

我想知道在初始化时是否可以返回指针。我知道我们可以使用string s("Hi")来声明和初始化string s,但我们可以对指针执行相同的操作吗? 我尝试做的是尽可能减少我的代码以尝试优化我的代码,因此我尝试queue<string> *p(&item)其中itemqueue<string>。这有效;但是,添加return会导致错误&#34; *&#34;之前的预期主要表达式。

我的代码段:

struct parsedObj
{
    queue<string> item;
    bool operator!() {return !item.empty();}
    queue<string>* operator*() {return queue<string> *p(&item);}
};

2 个答案:

答案 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->来简化流程。