C++ 将成员函数直接链接到标头中声明的C方法
我可以以某种方式链接这样的成员函数吗? 将该方法重新声明为成员并使其调用Mmsystem.h方法以使其不必包装C++ 将成员函数直接链接到标头中声明的C方法,c++,winapi,C++,Winapi,我可以以某种方式链接这样的成员函数吗? 将该方法重新声明为成员并使其调用Mmsystem.h方法以使其不必包装 #include <windows.h> #include <Mmsystem.h> namespace SoundLib { public class CWave { public: // WaveIn call external UINT waveOutGetNumDevs(VOID); }; } #包括 #包括 名称空间声音库{
#include <windows.h>
#include <Mmsystem.h>
namespace SoundLib {
public class CWave
{
public:
// WaveIn call
external UINT waveOutGetNumDevs(VOID);
};
}
#包括
#包括
名称空间声音库{
公共类CWave
{
公众:
//WaveIn呼叫
外部UINT waveOutGetNumDevs(无效);
};
}
对不起,不行。不行,你得把它包起来。此外,您的代码也有一些错误,例如external
与extern
(尽管这是理论上的)和public
在您上课之前。没有,但您可以用内联甚至静态来包装它,并希望编译器足够聪明(很可能是这样)
您需要显式调用您包装的函数:
class CWave
{
public:
static UINT waveOutGetNumDevs(VOID)
{
return ::waveOutGetNumDevs();
}
};
请注意双冒号。由于您的方法和全局函数具有相同的名称,所以需要双冒号以防止无限递归。代码看起来不像C++。Extn“C”无效({):谢谢!我不是C++程序员。我只是玩它。无论如何,使用VS2008它不在类名称之前公开。但是我要说它的理论。我要把它包起来。应该是代码> {Re::WaveOutGigNoDeDsSo();}< /Cord>
class CWave
{
public:
static UINT waveOutGetNumDevs(VOID)
{
return ::waveOutGetNumDevs();
}
};