请原谅我,因为我的C ++非常生疏。但我陷入困境。我正在尝试创建一个自定义列表,其中包含返回最前面和最多项的方法。
ElementType& front() throw(string*)
{
if (empty())
throw new string("Empty Vector");
else
return(first)
}
我的主要问题是我没有实际的第一项,我有一个指向它的指针,我不知道如何仅使用指针来引用指针指向它的内容。我尝试过类似的事情:
ElementType& *first
或
&*first
但我不能让他们玩得很好。任何建议都将不胜感激。
答案 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