我正在使用boost :: asio编写小型XMPP服务器,我想对我的代码进行单元测试.问题:
我有一个以下结构:
struct Data
{
std::string firstMember;
std::string secondMember;
std::string thirdMember;
};
Run Code Online (Sandbox Code Playgroud)
我想按字符串名称选择其中一个成员constexpr,比如
Data instance;
auto& member = getMember(instance, "firstMember");
Run Code Online (Sandbox Code Playgroud)
getMember是constexpr函数/ struct/macros /有问题和表达式应该(我希望它)优化为简单auto& member = instance.firstMember;.我的愿望是能够getMember从另一个constexpr函数调用,而另一个函数又是特定成员的计算名称 - >某种编译时间反射.
我知道,C++中没有反射,因此可以以某种方式注册(部分特殊化?使用一些宏魔法?)有问题的struct成员名称,如:
REGISTER_MEMBER(Data, "firstMember", firstMember);
Run Code Online (Sandbox Code Playgroud)
我想要的只是编译时优化并在运行时不执行任何操作.这可能在C++ 11中如何实现?
__BASE_FILE__在Visual C++中是否有任何等价物?我想知道VC++ 当前正在编译的文件的名称.
注意:__FILE__扩展到当前文件,例如它可能是#includes之一.
来自gcc的文档:
__BASE_FILE__
此宏以C字符串常量的形式扩展为主输入文件的名称.这是在调用C编译器时指定为参数的源文件.
我正在尝试使用fstream读取二进制文件,我之前在那里写过一些数据.
问题是在到达函数结束后,将显示主题中的消息
代码如下:
ifstream in("contrib.bin", ios::in | ios::binary );
char *nume, dim;
in.read((char*)&dim, sizeof(int));
nume = new char[dim + 1];
in.read(nume, dim);
nume[dim] = '\0';
double imp;
in.read((char*)&imp, sizeof(double));
delete [] nume;
Run Code Online (Sandbox Code Playgroud)
现在,我已完成我的作业并寻找这个问题,但面对它的其他人有数组,而我的变量是一个简单的字符.
有人能指出我正确的方向吗?
c++ ×4
boost ×1
boost-asio ×1
constexpr ×1
corrupt ×1
fstream ×1
gcc ×1
macros ×1
unit-testing ×1
visual-c++ ×1
xmpp ×1