如何从指针中提取引用?

时间:2011-10-11 01:54:54

标签: c++ pointers reference

请原谅我,因为我的C ++非常生疏。但我陷入困境。我正在尝试创建一个自定义列表,其中包含返回最前面和最多项的方法。

ElementType& front() throw(string*)
{
   if (empty())
      throw new string("Empty Vector");
   else
      return(first)
}

我的主要问题是我没有实际的第一项,我有一个指向它的指针,我不知道如何仅使用指针来引用指针指向它的内容。我尝试过类似的事情:

ElementType& *first

&*first

但我不能让他们玩得很好。任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:4)

如果first是指向您元素的指针,*first会为您提供参考。

答案 1 :(得分:1)

int& intRefFunction() {
  static int intValue = 42;
  static int* intPointer = &intValue;
  return *intPointer;
}

答案 2 :(得分:0)

ElementType& *first

声明变量first,我认为是指向ElementType对象的引用的指针。我不确定它是否是有效的C ++。

&*first

如果你返回这个,你将返回指针first指向的解除引用对象的地址,我相信这只是返回first

如果first是指向第一个ElementType项的指针,则只需将取消引用的对象作为*first返回。

顺便说一句,这不是你的代码唯一看起来错误的东西。我不认为抛出字符串指针是一种好习惯(抛出从std::exception派生的对象,例如std::out_of_range),也不包括异常规范(它会产生不必要的开销)。所以你可能会更喜欢这样的事情:

ElementType& front()
{
   if (empty()) {
      throw std::out_of_range("Empty Vector");
   }
   return *first;
}

答案 3 :(得分:0)

ElementType& *first

不合法。你不能有一个指向参考的指针。

只需对指针进行反驳即可,您将获得对它的引用。

示例,假设first是一个指针:

ElementType& r(*first)
return r