Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++:双冒号标记和(空缺*)_C++ - Fatal编程技术网

C++:双冒号标记和(空缺*)

C++:双冒号标记和(空缺*),c++,C++,可能重复: 我正在使用C++文件,遇到了以下行: tmp.sort(Hash::pairval, printPair, (void *)(tmp.bitSize())); 我最不确定void*是什么意思。bitsize是一个函数,我以前听说过传递函数指针这个术语。是这样吗 我知道::通常是作用域解析运算符,我在.cpp/.h对象类型文件中看到过。我相信它在这里的作用是相同的,声明pairval是在Hash中找到的 感谢您,void*只是将tmp.bitSize的返回值强制转换为void指针类

可能重复:

我正在使用C++文件,遇到了以下行:

tmp.sort(Hash::pairval, printPair, (void *)(tmp.bitSize()));
我最不确定void*是什么意思。bitsize是一个函数,我以前听说过传递函数指针这个术语。是这样吗

我知道::通常是作用域解析运算符,我在.cpp/.h对象类型文件中看到过。我相信它在这里的作用是相同的,声明pairval是在Hash中找到的


感谢您,void*只是将tmp.bitSize的返回值强制转换为void指针类型。铸造是C++和C中非常常见的操作。p> Hash::pair

很可能是对类哈希的静态成员的调用

void*部分是tmp.bitSize的强制转换到void指针,它很可能返回某种值。所以没有函数指针

我最不确定void*是什么意思。bitsize是一个函数,我以前听说过传递函数指针这个术语。是这样吗

没有。注意括号,tmp.bitSize是一个函数调用表达式,它被调用并返回一个值。因此,这里不涉及函数指针

然后将返回值转换为指向void类型的指针,即指向某个类型的catch-all指针,以便传递给期望该指针的函数

我不知道,究竟为什么有人会把一个看起来像数字的比特大小转换成指针。这介于可疑和不正确之间

仔细阅读。不鼓励使用C型铸造,而将其铸造为void*是非常有用的,而且通常是危险的

知道::通常是作用域解析操作符,我在.cpp/.h对象类型文件中看到过。我相信它在这里的作用是相同的,声明pairval是在Hash中找到的


没错。

RTFM,很可能是重复的。另外:问答网站=>一篇帖子=一个问题。无效类型!=指向void的指针是指向void@K-对不起,没听到那个词。请参阅我的编辑。显式类型转换在编写良好的C++中非常罕见,然后几乎总是动态的。显式类型转换确实发生在与C或遗留代码接口时,但即使如此,您也几乎不需要显式转换为void*@JamesKanze:我认为动态_转换不是最常见的。如果是这样的话,我会更倾向于看设计而不是代码。