如何使用C 将函数声明为全局
How to declare the function as global using C++?
我在Visual Studio中使用MFC。 这是在CPP文件中定义的函数启动器,并在.h文件中声明为
protected:
bool StartClient(); // in Client.h file
bool CClientSocketDlg::StartClient() //in Client.cpp file
{
CString strServer;
m_ctlIPAddress.GetWindowText( strServer );
------
-----
return bSuccess;
}
我也声明了这个
extern CClientSocketDlg StartClient(); // in global.h
我想在其他xyz.cpp文件中调用startClient()函数。这就是为什么我将此功能宣布为全局。但这无效。
这给出了错误:
错误lnk2001:未解决的外部符号" class cclientsocketdlg __cdecl startClient(void)"(?startClient @@ ya?avcclientsocketdlg @@ xz xz)
>
请指导我解决该错误。谢谢
声明
extern CClientSocketDlg StartClient();
告诉编译器StartClient
是一个独立的功能,不采用任何参数并返回CClientSocketDlg
对象的副本。
定义
bool CClientSocketDlg::StartClient() { ... }
告诉编译器,类CClientSocketDlg
具有一个名为StartClient
的成员函数,该函数不进行参数并返回bool
。
这两个不一样。
在发生错误的情况下,似乎您正在调用独立函数,而不是成员函数,并且仅被声明为未定义(即该功能没有实现)。如果您是要从 class 调用StartClient
,则应声明对象并在对象中调用函数:
CClientSocketDlg dlg;
dlg.StartClient();
如果您打电话给独立式,您必须实现该功能。
您可以使用范围分辨率运算符访问C
相关文章:
- 如何声明全局QWidget?
- C++如何使用虚拟基类型声明全局静态分配的变量
- 如何在多个文件中声明全局 std::vector 2d 数组?C++
- 如何为 std::array 声明全局编译时常量?
- 将全局声明为类声明语句的一部分与使用单独的语句声明全局之间是否有区别
- 困惑,为什么没有在此范围内声明 c++ 全局变量
- 使用静态和避免单例模式声明全局变量
- 声明全局变量 <vector>,代码将无法成功运行
- 即使在定义类后也无法在C++中声明全局变量?
- 查找声明全局变量的文件
- 恒定声明全局或在使用它的函数中声明恒定声明之间有什么区别?
- 我应该如何在我的C++项目中声明全局变量
- 使用预处理器技巧定义和声明全局变量
- 在头文件中声明全局 const 对象
- 是否可以将操作作为参数传递而无需声明全局函数
- 在C++文件中声明全局类实例
- 如何在C++中声明全局变量
- 在c++中声明全局变量时出现问题
- 声明全局变量,在方法中初始化
- 显式声明全局命名空间