小编Ste*_*son的帖子

C ++名称空间的奇怪行为

这是一些显示奇怪的代码:

namespace ns
{
  typedef int int_type;

  class classus {
    public: 
      int a = 0;
  };

  void print(classus c){
    printf("a equals %i \n", c.a);
  }
  void print(int_type a){
    printf("a equals %i \n", a);
  }
}

int main(int argc, char* argv[])
{
  ns::int_type a1 = 2;
  ns::classus a2;
  ns::print(a1); // this line wont work without explicit ns:: scope
  print(a2); // this line works with or without explicit ns:: scope
}
Run Code Online (Sandbox Code Playgroud)

它在Visual Studio 2017上构建并运行。Intellisense也对此感到非常满意。

似乎包含在名称空间中的class变量污染了该名称空间范围的整个行。这是错误还是功能?不管哪种方式,是否有关于此的一些文档...没有找到任何

c++ namespaces visual-c++

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

如何使用POCO发送websocket PONG响应

我正在尝试使用POCO 1.7.5设置websocket服务器.

这里发现的POCO样本效果很好.111-122行读取(sligthly prettified):

WebSocket ws(request, response);
char buffer[1024];
int n, flags;

do
{
    n = ws.receiveFrame(buffer, sizeof(buffer), flags);
    ws.sendFrame(buffer, n, flags);
}
while (n > 0 && (flags & WebSocket::FRAME_OP_BITMASK) != WebSocket::FRAME_OP_CLOSE);
Run Code Online (Sandbox Code Playgroud)

但是,这种方法不需要通过乒乓帧来回答ping帧.如何使用POCO正确完成此操作?我试过以下,但我不知道它是否正确:

WebSocket ws(request, response);
char buffer[1024];
int n, flags;

do
{
    n = ws.receiveFrame(buffer, sizeof(buffer), flags);
    if ((flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_PING){
        buffer[0] = WebSocket::FRAME_OP_PING;
        ws.sendFrame(buffer, 1, WebSocket::FRAME_OP_PONG);
    }
    else{
        ws.sendFrame(buffer, n, flags);
    }
}               
while (n > 0 && (flags & WebSocket::FRAME_OP_BITMASK) != WebSocket::FRAME_OP_CLOSE);
Run Code Online (Sandbox Code Playgroud)

不知道这是否是正确的做法,并且无法在线找到,包括POCO文档.该 …

c++ websocket poco-libraries

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

标签 统计

c++ ×2

namespaces ×1

poco-libraries ×1

visual-c++ ×1

websocket ×1