gpt4 book ai didi

c++ - 使用函数调用初始化字符串成员 c++

转载 作者:太空宇宙 更新时间:2023-11-04 16:11:01 25 4
gpt4 key购买 nike

一个对象有一个字符串,需要构造。

#include <string>

class SDLException
{
private:
std::string what_str;
public:
SDLException(const std::string &msg);
~SDLException(void);
};

该字符串具有我需要考虑的隐藏依赖项 (SDL_GetError())。我可以在函数中构造字符串。但我不知道如何使用该函数的返回值来初始化字符串成员。

#include "SDLException.hpp"

#include <sstream>
#include <string>
#include <SDL.h>

static void buildSTR(const std::string &msg)
{
std::ostringstream stream;
stream << msg << " error: " << SDL_GetError();
std::string str = stream.str();
//if i return a string here it would be out of scope when i use it
}

SDLException::SDLException(const std::string &msg)
: what_str(/*i want to initialise this string here*/)
{}

SDLException::~SDLException(void){}

如何以最少的开销初始化成员 what_strwhat_str的内容应该等于str的内容。

最佳答案

您的 buildSTR() 函数应该返回一个字符串:

static std::string buildSTR(const std::string &msg)
{
std::ostringstream stream;
stream << msg << " error: " << SDL_GetError();
return stream.str();
}

然后在这里使用它就没有问题了:

SDLException::SDLException(const std::string &msg)
: what_str(buildSTR(msg))
{ }

或者,您可以省略sstream 包含并简单地使用字符串连接,因为std::string 有一个运算符重载以允许连接const char*。例如:

SDLException::SDLException(const std::string &msg)
: what_str(msg + " error: " + SDL_GetError())
{ }

关于c++ - 使用函数调用初始化字符串成员 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683790/

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