小编bed*_*rom的帖子

如何在具有非常量指针键的映射中通过常量指针键查找

以下 C++ 代码无法编译,因为它将非常量指针传递给需要 const 指针的find()函数。

#include <map>

std::map<int*, double> mymap;

double myfind(const int * mykey)
{
    return mymap.find(mykey)->second;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不改变地图类型或使变量mykey非常量的情况下使查找工作?毕竟函数find()不会修改指向的对象,它只是比较指针。

c++ stl const-correctness const-cast const-pointer

7
推荐指数
1
解决办法
1154
查看次数

graphviz中headlabel和taillabel的颜色不同

是否可以在graphviz中为headlabel和taillabel设置不同的颜色?使用labelfontcolor我可以为它们设置一种常见的颜色,但我需要不同的颜色(类似headfontcolor和tailfontcolor,但这些属性不存在).

dot graphviz

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

如何轻松公开我是朋友的 C++ 类的所有私有成员?

我有以下课程:

class Foo
{
friend class FriendFoo;
private:
    int private_number1;
    int private_number2;
    int private_function1();
    int private_function2();
};

class FriendFoo
{
public:
    Foo& foo;
    FriendFoo(Foo& foo_) : foo(foo_)
    {
    }

    // I don't want to write the following adaptors:
    int getPrivateNumber1()
    {
        return foo.private_number1;
    }

    int getPrivateNumber2()
    {
        return foo.private_number2;
    }

    int private_function1()
    {
        return foo.private_function1();
    }

    int private_function2()
    {
        return foo.private_function2();
    }
};
Run Code Online (Sandbox Code Playgroud)

问题:

我想通过 访问Foo来自外部的所有私有成员FriendFoo,但我不想FriendFoo在私有成员Foo更改(或添加另一个成员)时修改类。理想情况下,我想摆脱所有的适配器。有没有办法实现这一目标?

背景:

我想用它来对私有方法进行单元测试,我选择了“朋友”的方式。请不要在这里讨论/批评私有方法的测试,已经有很多关于它的文章了。我只想找到解决所提出的具体技术问题的方法。

c++ private friend

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

如何为重定向到winston的socket.io日志添加前缀?

在我的node.js应用程序中,我成功地将socket.io库生成的日志消息重定向到winston库:

var express = require('express')
  , winston = require('winston')
  , http = require('http');
var logger = new (winston.Logger)({
  transports: [
    // ... configuring transports ...
  ]
});
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server, {'logger': logger});
Run Code Online (Sandbox Code Playgroud)

现在我想为所有这些重定向消息添加一个前缀(类似"socket.io:"),以区别于应用程序其他部分生成的日志消息.有没有办法如何实现这一目标?

node.js socket.io winston

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