首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用std::std流作为作为运行时错误抛出的文本

使用std::std流作为作为运行时错误抛出的文本
EN

Stack Overflow用户
提问于 2020-12-05 22:48:32
回答 1查看 127关注 0票数 0

因此,基本上,我正在检查是否在SDL中创建了一个窗口,如果没有,则抛出一个运行时错误。以下是代码评审中的某个人向我建议的。

代码语言:javascript
运行
复制
if (!windowCreated())
{
    std::stringstream buffer;
    buffer << "Could not intialize SDL properly: " << SDL_GetError();
}

但在std::stringstream buffer行中,我说incomplete type is not allowed时出错了。

我正在玩弄它,注意到如果我执行std::stringstream buffer();,这个错误就会消失,但是在下一行中会出现一个新的错误,即expression must have integral or unscoped enum type

下面的功能显示了我正在努力实现的目标。

代码语言:javascript
运行
复制
void throwError()
{
    bool windowCreated = false;
    if (!windowCreated)
    {
        const char* SDL_ERROR = "someerrror";
        std::stringstream buffer;
        buffer << "error: " << SDL_ERROR;
        throw std::runtime_error(buffer.str());
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-06 00:36:44

确保您的代码中有#include <sstream>,以便使用std::stringstream (在您的情况下,您更喜欢std::ostringstream )。您可能丢失了该头文件包含,但该类已在您所包含的另一个头文件中进行了前向声明。这将解释为什么编译器认为这个类是一个不完整的类型。

std::stringstream buffer();不能工作的原因是,它不是对名为bufferstd::stringstream变量的声明,而是对一个名为buffer的函数的声明,该函数不接受参数并返回std::stringstream

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65162784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档