英语不是我的母语,我无法理解如何正确编写指定的样本.当你说什么聚合多个对象,如"邮票收集",你可以说:"邮票收集",我是对的吗?如果你会说"集邮",那就意味着一些"集合",这是一个单一的"邮票".
但是我经常看到类似"ItemList"的类 - 这是不是意味着这样的类是一个列表,它是一个其他的项目?这样的样本更加刺激:
class ItemList: List<Item>
Run Code Online (Sandbox Code Playgroud)
是不是必须如此?:
class ItemsList: List<Item>
Run Code Online (Sandbox Code Playgroud)
为什么很少这么写?或者它是一些编程语言命名约定?或者只是适当的英语句子?:)
我使用boost :: asio :: buffer来发送消息
void Send(const std::string& messageData)
{
socket.async_write(boost::asio::buffer(messageData), ...);
}
Run Code Online (Sandbox Code Playgroud)
并在io_service线程中的某处遇到"字符串迭代器不可解除"的运行时错误.当我创建对象的变量来存储缓冲区的消息数据时:
void Send(const std::string& messageData)
{
this->tempStorage = messageData;
socket.async_write(boost::asio::buffer(this->tempStorage), ...);
}
Run Code Online (Sandbox Code Playgroud)
错误永远不会发生.几乎在Send()调用之后释放std :: string(引用了messageData) - boost :: asio :: buffer是否只存储对象的引用?如果是这样,我如何强制它按值存储数据?
是否可以使用HTTP/1.0响应HTTP/1.1请求?
我通过简单的套接字实现HTTP通信,客户端使用HTTP/1.0和HTTP/1.1发出请求,但协议独立于HTTP版本,因此我希望始终使用HTTP/1.0响应所有请求.HTTP标准是否承担此类通信?
我需要导入 Graphics.UI.Gtk,GHC建议:
\n\n\n\n\n也许您需要将 \xe2\x80\x98text\xe2\x80\x99 添加到 .cabal 文件中的构建依赖项中。
\n
但我使用stack,所以我将gtk添加到 extra-deps 中,执行stack build并获取../gtk/: getDirectoryContents:openDirStream: 不存在 (没有这样的文件或目录)。
\n\n如何添加与stack 的依赖关系?
\n为什么valgrind的DRD工具抱怨"线程加载冲突...大小为4":关于这样的代码:
void SomeFunction(const int& value)
{
boost::bind(..., value); /* <-- complaines on this line
with last backtrace function "new(int)" */
}
Run Code Online (Sandbox Code Playgroud)
boost :: bind()是否按引用或值存储值?
我实现了游戏服务器,我需要读写.所以我接受传入连接并使用aio_read()从它开始读取,但是当我需要发送一些东西时,我停止使用aio_cancel()读取然后使用aio_write().在写回调内,我恢复阅读.所以,我一直在读,但是当我需要发送一些东西时 - 我暂停阅读.
它适用于〜的20%的时间-在其他情况下调用调用aio_cancel()失败,"正在进行操作" -我无法取消它(即使在永久而周期).所以,我添加的写操作永远不会发生.
如何很好地使用这些功能?我错过了什么?
编辑:在Linux 2.6.35下使用.Ubuntu 10 - 32位.
示例代码:
void handle_read(union sigval sigev_value) { /* handle data or disconnection */ }
void handle_write(union sigval sigev_value) { /* free writing buffer memory */ }
void start()
{
const int acceptorSocket = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(port);
bind(acceptorSocket, (struct sockaddr*)&addr, sizeof(struct sockaddr_in));
listen(acceptorSocket, …Run Code Online (Sandbox Code Playgroud) 我使用boost的二进制序列化,直到现在它运行良好.我有std::list指向序列化输出(oarchive)的指针,但序列化在对象的serialize()函数中失败,并带有MSVC的对话框:
R6010 -abort() has been called
并将此类字符串打印到控制台窗口中:
Assertion failed: 0 == static_cast<int>(t) || 1 == static_cast<int>(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91
这是什么意思?
项目非常大,来源是分布式的,所以我不能在这里发布它的代码,但是我试图在简单的项目中模拟这个错误 - 它运行良好有什么奇怪的.
PS我在Windows XP上使用带有MSVC2010EE的boost 1.44.当我在" Debug Error! "窗口上单击" 重试 "时,调试器在序列化行旁边的代码行上显示箭头archive << myList;- 我的意思是在某些析构函数或其他东西上似乎发生了错误.当我在对象serialize()函数中进行更改时 - 它们将在我重建整个项目时被应用(在编译之前清理) - 但是如果我只是编译它(IDE显示所有包含已更改头的源都被重新编译) - 没有更改将在运行时发生自上一个版本(我尝试使用printf()) - 这很奇怪.我偶尔会设置一些关键定义吗?
我的C++程序创建了.png文件,我需要在创建后立即打开(查看)这个文件 - 有没有办法打开它,因为它是在Windows资源管理器中打开的 - 所以文件可以用用户的首选程序打开,如果有的话没有与文件格式相关的程序 - Windows将显示对话窗口,用户可以在其中选择任何程序来打开该文件.
Crossplatform(+ Linux,+ MacOS,+ BSD)解决方案将是完美的.
谢谢.
是否可以在OCaml中打印值的名称,例如,如果我有
type my_type =
| MyType_First of int
| MyType_Second of string
Run Code Online (Sandbox Code Playgroud)
然后做类似的事情:
let my_value = MyType_First 0 in
print_string ("my_value is of type " ^ String.from_type my_value ^ ".\n";
Run Code Online (Sandbox Code Playgroud)
我可以得到"my_value属于MyType_First类型".?
谢谢.
码
Stack.pop some_stack;
Run Code Online (Sandbox Code Playgroud)
生成"警告S:此表达式应具有类型单位.".是否可以将其静音而不将结果分配给某个变量?
谢谢.