这是我正在处理的代码示例.
头文件包含以下代码:
class TestClass
{
private:
LPCWSTR m_variable;
public:
TestClass(const std::string& variable);
}
Run Code Online (Sandbox Code Playgroud)
这是实施:
TestClass::TestClass(const std::string& variable)
{
std::wstring stemp = std::wstring(variable.begin(), variable.end());
m_variable= stemp.c_str();
}
Run Code Online (Sandbox Code Playgroud)
这是我打电话的代码
std::string tempStr = "Panda";
TestClass *test = new TestClass(tempStr);
Run Code Online (Sandbox Code Playgroud)
我通过调试器,看到在构造函数中,值看起来很好L"Panda".但是一旦我退出调试器,我就不再看到变量的数据了.
stemp.c_str()返回一个指向字符串内容的非拥有指针.并且std::wstring stemp,拥有支持结果的数据.c_str(),从构造函数返回的那一刻就不再存在.
将您的类更改为const std::wstring直接存储,因此您拥有该字符串的拥有的持久副本.然后,您可以.c_str()在需要时安全地呼叫该成员LPCWSTR:
class TestClass
{
private:
const std::wstring m_variable;
public:
TestClass(const std::string& variable);
}
TestClass::TestClass(const std::string& variable) : m_variable(variable.begin(), variable.end()) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |