- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意:我不认为这是与此有关的十亿个其他问题的重复。我查看了有问题的代码,这不是语法错误(我认为)。
我有以下功能:
char init_fundementals()
{
BinIO.AddBinType(typeid(uint16_t), read_uint16, write_uint16);
BinIO.AddBinType(typeid(char*), read_cstr, write_cstr);
BinIO.AddBinType(typeid(uint32_t), read_uint32, write_uint32);
return 'z';
}
其中所有的 write_
... 和 read_
... 函数在文件的前面声明。该文件是一个标题(因为我所做的就是包含它)。这总是返回 z
是有原因的。这是一种黑客攻击,我不确定它是否有效。编译器给我以下错误:
fundemental_bin_types.h:70:10: error: expected unqualified-id before ‘.’ token
fundemental_bin_types.h:71:10: error: expected unqualified-id before ‘.’ token
fundemental_bin_types.h:72:10: error: expected unqualified-id before ‘.’ token
此 header 包括类 BinIO
的 header 。
二进制IO.h:
#ifndef BINIO_H
#define BINIO_H
#include <fstream>
#include <boost/shared_ptr.hpp>
#include <map>
#include <typeinfo>
using namespace std;
typedef boost::shared_ptr<fstream> fstream_ptr;
class BinIO {
public:
BinIO();
static void AddBinType(type_info t_name, void(*reader)(fstream_ptr, void*), void(*writer)(fstream_ptr, void*));
protected:
static map<char*, void(*)(fstream_ptr, void*)> typemap_r;
static map<char*, void(*)(fstream_ptr, void*)> typemap_w;
};
#endif /* BINIO_H */
BinIO.cpp:
#include "BinIO.h"
BinIO::typemap_r=map<char*, void(*)(fstream_ptr, void*)>;
BinIO::typemap_w=map<char*, void(*)(fstream_ptr, void*)>;
BinIO::BinIO() {
}
BinIO::AddBinType(type_info t_name, void(*)(fstream_ptr,void*) reader, void(*)(fstream_ptr,void*) writer)
{
typemap_r.insert(pair<char*, void(*)(fstream_ptr, void*)>(t_name.name(), reader));
typemap_w.insert(pair<char*, void(*)(fstream_ptr, void*)>(t_name.name(), writer));
}
fundamental_bin_types.h:
#ifndef FUNDEMENTAL_BIN_TYPES_H
#define FUNDEMENTAL_BIN_TYPES_H
#include <cstring>
#include <arpa/inet.h>
#include "BinIO.h"
using namespace std;
void read_uint32(fstream_ptr in, void* out)
{
char data[sizeof(uint32_t)];
(*in).read(data, 4);
*((uint32_t*)out)=ntohl(reinterpret_cast<uint32_t>(data));
}
void write_uint32(fstream_ptr out, void* in)
{
(*out).write(reinterpret_cast<char*>(htonl(*(uint32_t*)in)), sizeof(uint32_t));
}
//
void read_cstr(fstream_ptr in, void* out)
{
char* buff;
char* size;
(*in).read(size, sizeof(size_t));
(*in).read(buff, reinterpret_cast<size_t>(size));
*((char*)out)=*buff;
}
void write_cstr(fstream_ptr out, void* in)
{
(*out).write(reinterpret_cast<char*>(in), sizeof(size_t));
(*out).write((char*)in, strlen((char*)in));
}
//
void read_uint16(fstream_ptr in, void* out)
{
char data[sizeof(uint16_t)];
(*in).read(data, sizeof(uint16_t));
*((uint16_t*)out)=ntohs(*reinterpret_cast<uint16_t*>(data));
}
void write_uint16(fstream_ptr out, void* in)
{
(*out).write(reinterpret_cast<char*>(htons(*((uint16_t*)in))), sizeof(uint16_t));
}
//
void read_bindata(fstream_ptr in, void* out)
{
uint32_t* size;
read_uint32(in, size);
out=new char[*size];
(*in).read((char*)out, *size);
}
void write_bindata(fstream_ptr out, void* in)
{
char buff[4];
for(int i=0; i<4; i++)
{
buff[i]=*(((char*)in)+i);
}
(*out).write(buff, 4);
(*out).write(((char*)in)+4, reinterpret_cast<uint32_t>(buff));
}
void init_fundementals()
{
BinIO.AddBinType(typeid(uint16_t), read_uint16, write_uint16);
BinIO.AddBinType(typeid(char*), read_cstr, write_cstr);
BinIO.AddBinType(typeid(uint32_t), read_uint32, write_uint32);
}
#endif /* FUNDEMENTAL_BIN_TYPES_H */
有人知道问题出在哪里吗?
最佳答案
您必须使用 ::
来访问静态函数:
BinIO::AddBinType(typeid(uint16_t), read_uint16, write_uint16);
关于c++ - "expected unqualified-id before ‘.’ token”错误--C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771037/
我正在尝试将二进制数据写入文件流 out,我已将其打开为 std::ios::binary。我正在尝试使用 ostream::write 写入它。 int S = 0; int space = hto
我目前正在开发一个用于我的几个程序的委托(delegate)类。我的松散函数代码有效,但我在绑定(bind)成员函数的代码中遇到编译器错误。编译错误内容为 error: expected unqual
在编译以下代码时出现错误“字符串常量之前的预期不合格 ID” In file "Notification_Constants.h" namespace NOTIFICATION_CONSTANTS {
我在 linux 机器上工作并使用 g++ 编译 .cpp 文件。我不断收到以下错误: hillClimbing.cpp:6: error: expected unqualified-id befor
我是 C++ 新手,所以我不知道在 phidget-code 示例中这个错误是什么意思: Main.cpp:8:16: error: expected unqualified-id before nu
我目前正在编写一个 C++ 应用程序,它结合 math.h 实现振荡器。我拥有的代码应该适用于应用程序(尝试编译目标文件),但我遇到了一个编译器错误,很可能与语法/等有关;我认为这与命名空间有关。错误
我在.vbs文件中的代码出现以下错误: C:\...\Root_VBS_Script_1.vbs(19, 1) Microsoft VBScript runtime error: Invalid or
测试数据 1: "Abc.TestCase For TestCase By Abc.TestCase Using TestCase" --> 2 matches 2: "(Abc.
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 7 年前。 编辑问题以包含 desired behavior, a specific proble
我有一个包含 User 子类的应用程序。 目前,我正在尝试传递一个用于识别用户登录号的 int,但是,我在声明子类构造函数时遇到了问题。 用户.h class User { public:
我从 here 复制粘贴这段代码: #include namespace boost { namespace math { template > class poisson_distributio
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我写了一个C++程序,出现了这个错误,我找不到原因。有谁能够帮我。这个函数用于从链表中删除第i个元素,我已经尽力了,但我找不到原因。 #include #include using namespa
我刚刚创建了一个新的 Heroku 应用程序,但我无法将我的存储库(分支 staging)的子树文件夹 backend 推送到新创建的应用程序 myapp-staging(还没有分支)。 这是我推送子
以下代码返回:error: expected unqualified-id before ‘for’ 我找不到导致错误的原因。感谢您的帮助! #include using namespace std;
Closed. This question needs debugging details。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。 5年前关闭。 I
我看到过一些关于这个错误的问题,但我没有太多用 C++ 创建类的经验,所以我实际上不明白答案的含义。我还应该指出,我没有编写这段代码。 我收到标题中所述的错误,我相信它来自这个头文件,但我不知道错误的
我正在尝试制作某种模板化的 Queue 类。看起来没问题,但我在同一行中收到 2 个错误,我不知道为什么。错误出现在我试图给出析构函数定义的实现文件 .cpp 中。这是类头文件的代码: #ifndef
第 21 行和第 22 行给我这个错误,这是我注意到的。从其他有类似错误信息的情况来看,我在某处遇到了语法错误。我就是想不通是什么。这是我的 .cpp 文件: #include #include
我是初学者,尝试此链接中的最后一个 C++ 练习题:http://www.cplusplus.com/forum/articles/12974/这叫做毕业。开始编写代码后,我决定将一个类定义分离到一个
我是一名优秀的程序员,十分优秀!