以下 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()不会修改指向的对象,它只是比较指针。
是否可以在graphviz中为headlabel和taillabel设置不同的颜色?使用labelfontcolor我可以为它们设置一种常见的颜色,但我需要不同的颜色(类似headfontcolor和tailfontcolor,但这些属性不存在).
我有以下课程:
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更改(或添加另一个成员)时修改类。理想情况下,我想摆脱所有的适配器。有没有办法实现这一目标?
我想用它来对私有方法进行单元测试,我选择了“朋友”的方式。请不要在这里讨论/批评私有方法的测试,已经有很多关于它的文章了。我只想找到解决所提出的具体技术问题的方法。
在我的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:"),以区别于应用程序其他部分生成的日志消息.有没有办法如何实现这一目标?