小编Sla*_*lav的帖子

"项目列表"或"项目列表"

英语不是我的母语,我无法理解如何正确编写指定的样本.当你说什么聚合多个对象,如"邮票收集",你可以说:"邮票收集",我是对的吗?如果你会说"集邮",那就意味着一些"集合",这是一个单一的"邮票".

但是我经常看到类似"ItemList"的类 - 这是不是意味着这样的类是一个列表,它是一个其他的项目?这样的样本更加刺激:

class ItemList: List<Item>
Run Code Online (Sandbox Code Playgroud)

是不是必须如此?:

class ItemsList: List<Item>
Run Code Online (Sandbox Code Playgroud)

为什么很少这么写?或者它是一些编程语言命名约定?或者只是适当的英语句子?:)

c++ naming-conventions

39
推荐指数
2
解决办法
1万
查看次数

强制boost :: asio :: buffer按值复制

我使用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是否只存储对象的引用?如果是这样,我如何强制它按值存储数据?

c++ boost-asio

9
推荐指数
1
解决办法
4872
查看次数

对HTTP/1.1请求的HTTP/1.0响应

是否可以使用HTTP/1.0响应HTTP/1.1请求?

我通过简单的套接字实现HTTP通信,客户端使用HTTP/1.0和HTTP/1.1发出请求,但协议独立于HTTP版本,因此我希望始终使用HTTP/1.0响应所有请求.HTTP标准是否承担此类通信?

http

8
推荐指数
1
解决办法
4063
查看次数

尝试使用堆栈构建时 getDirectoryContents:openDirStream: 不存在错误

我需要导入 Graphics.UI.GtkGHC建议:

\n\n
\n

也许您需要将 \xe2\x80\x98text\xe2\x80\x99 添加到 .cabal 文件中的构建依赖项中。

\n
\n\n

但我使用stack,所以我将gtk添加到 extra-deps 中,执行stack build并获取../gtk/: getDirectoryContents:openDirStream: 不存在 (没有这样的文件或目录)

\n\n

如何添加与stack 的依赖关系?

\n

haskell-stack

8
推荐指数
1
解决办法
1511
查看次数

boost :: bind()是通过引用还是按值复制参数?

为什么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()是否按引用或值存储值?

c++ valgrind boost-bind

6
推荐指数
1
解决办法
5501
查看次数

C - 如何同时使用aio_read()和aio_write()

我实现了游戏服务器,我需要读写.所以我接受传入连接并使用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)

c sockets networking multithreading aio

5
推荐指数
2
解决办法
9601
查看次数

提升序列化断言失败

我使用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++ serialization boost assert assertion

4
推荐指数
1
解决办法
2151
查看次数

使用C++代码中的Windows本机程序打开文件

我的C++程序创建了.png文件,我需要在创建后立即打开(查看)这个文件 - 有没有办法打开它,因为它是在Windows资源管理器中打开的 - 所以文件可以用用户的首选程序打开,如果有的话没有与文件格式相关的程序 - Windows将显示对话窗口,用户可以在其中选择任何程序来打开该文件.

Crossplatform(+ Linux,+ MacOS,+ BSD)解决方案将是完美的.

谢谢.

c++ windows explorer windows-explorer graphviz

3
推荐指数
1
解决办法
2501
查看次数

OCaml:获取值的类型名称

是否可以在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类型".?

谢谢.

ocaml

3
推荐指数
1
解决办法
2822
查看次数

OCaml:警告S:此表达式应具有类型单位

Stack.pop some_stack;
Run Code Online (Sandbox Code Playgroud)

生成"警告S:此表达式应具有类型单位.".是否可以将其静音而不将结果分配给某个变量?

谢谢.

ocaml

3
推荐指数
1
解决办法
928
查看次数