gpt4 book ai didi

c++ - 异常错误 : expected unqualified-id before ')' token

转载 作者:行者123 更新时间:2023-11-30 02:53:56 34 4
gpt4 key购买 nike

我正在尝试采用我创建的列表数据类型并将其作为模板。在这样做的过程中,我遇到了以下晦涩难懂的问题。如果需要,我可以发布所有代码,但这确实是导致问题的函数。

注意:在我找到这个方法之前,这段代码编译得很好。我在每隔几行写完之后进行编译作为健全性检查,一切都很好,但后来我到了这一点,它就爆炸了。如果我从这个方法中取出 try/catch block ,它编译得很好,所以我很确定问题在那里被隔离,而不是标题/等中缺少分号。正如其他答案所报告的那样——尽管我当然做了三重检查以确保! :)

这是导致问题的代码:

template<class T>
bool UnsortedListType<T>::IsFull()
{
try { return false; }
catch(std::bad_alloc exception) { return true; } // line 35
}

就像我说的,我在仍然触发错误的同时尽可能地简化了它。这是错误:

UnsortedListType.cpp||In member function 'bool UnsortedListType<T>::IsFull()':
UnsortedListType.cpp|35|error: expected type-specifier
UnsortedListType.cpp|35|error: expected unqualified-id before 'exception'
UnsortedListType.cpp|35|error: expected ')' before 'exception'
UnsortedListType.cpp|35|error: expected '{' before 'exception'
UnsortedListType.cpp|35|error: 'exception' was not declared in this scope
UnsortedListType.cpp|35|error: expected ';' before ')' token

我能找到的有关此错误的所有信息都表明问题是 header 或此文件中多了一个分号或缺少分号。我找不到任何一个实例。如果我删除 try/catch block ,它可以正常编译。

另外,如果我捕获一个 int,它编译得很好:

template<class T>
bool UnsortedListType<T>::IsFull()
{
try { return false; }
catch(int exception) { return true; }
}

我也可以 catch(int) 并且它会编译得很好,但是如果我尝试 catch(std::bad_alloc) (即没有“异常”变量名)它会抛出上面列出的相同错误。即使我简单地尝试 catch(std::exception) 它也无法编译。

所以现在我很困惑。我无论如何都不是 C++ 的专家,这是一个类,我不确定如何克服这个错误。

顺便说一句,这里是非通用版本的代码,它也编译得很好,并且是我使用的教科书的逐字记录(Dale,如果有人想知道的话):

bool UnsortedListType::IsFull() const
{
NodeType* location;
try
{
location = new NodeType;
delete location;
return false;
}
catch (std::bad_alloc exception)
{
return true;
}
}

我在带有内置 GNU 编译器的 Windows 7 上使用 CodeBlocks 12.11 IDE。

感谢任何帮助,如果需要,我很乐意发布更多代码,我只是不想填满页面。

非常感谢。

PS 我应该声明,是的,我正在做作业,但作业并不要求我制作模板,我选择自己走那条路。不确定它是否有任何相关性,但这是我第一次使用 C++ 模板,所以把它扔在那里。

最佳答案

std::bad_alloc在 header 中定义 <new> , 所以你需要包括它。

此外,最好通过引用来捕获异常。按值捕获会导致生成异常对象的拷贝(可能是切片)。就我个人而言,非常量引用是一种习惯,允许在处理过程中添加异常状态,但大多数基本异常类型都是无状态的,因此 const & 之间没有实际区别。和非常量 & .

关于c++ - 异常错误 : expected unqualified-id before ')' token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538299/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com