因此,基本上,我正在检查是否在SDL中创建了一个窗口,如果没有,则抛出一个运行时错误。以下是代码评审中的某个人向我建议的。
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
。
下面的功能显示了我正在努力实现的目标。
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());
}
}
发布于 2020-12-06 00:36:44
确保您的代码中有#include <sstream>
,以便使用std::stringstream
(在您的情况下,您更喜欢std::ostringstream
)。您可能丢失了该头文件包含,但该类已在您所包含的另一个头文件中进行了前向声明。这将解释为什么编译器认为这个类是一个不完整的类型。
std::stringstream buffer();
不能工作的原因是,它不是对名为buffer
的std::stringstream
变量的声明,而是对一个名为buffer
的函数的声明,该函数不接受参数并返回std::stringstream
。
https://stackoverflow.com/questions/65162784
复制相似问题