gpt4 book ai didi

c++ - 如何使用类 wstringstream 变量?

转载 作者:行者123 更新时间:2023-11-28 01:10:58 34 4
gpt4 key购买 nike

我有一个 std::wstringstream,我在我的类中将其用作某种缓冲区,并且该类中的大部分方法都使用了它。但是,当我尝试做这样的事情时:

#include <sstream>

class foo
{
public:
void methodA(int x, int y); // Uses mBufferStream
void methodB(int x, int y); // Uses mBufferStream

private:
std::wstringstream mBufferStream;
};

我收到以下错误:

error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

这显然不是我的确切类(class),但它是相同的设置。关于我可能做错了什么的任何想法?我正在使用 Microsoft Visual Studio 2005。

[编辑] 显示在 .cpp 文件中的方法体中的使用(作为使用示例):

void foo::methodA(int x, int y)
{
mBufferStream << "From " << x << " To " << y;
externalfunction(mBufferStream.str()); // Prints to message service
mBufferStream.str(L"");
}

最佳答案

这是因为编译器隐式声明了类 foo 的复制构造函数。 std::wstringstream 是不可复制的,因为它继承自 ios_base

将您的类(class)更改为:

#include <sstream>

class foo
{
public:
void methodA(int x, int y); // Uses mBufferStream
void methodB(int x, int y); // Uses mBufferStream

private:
std::wstringstream mBufferStream;
foo(const foo&); //noncopyable
void operator=(const foo&)
};

并且编译器应该指出您是罪魁祸首。

关于c++ - 如何使用类 wstringstream 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292103/

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