我收到此错误
错误2错误C2039:'get_quest_dynstr':不是'`global的成员 namespace''e:\ phase3a \ tdisk \ workspace \ cbs \ source \ cbs \ schedapp \ source \ treesearchbox.cpp 17 1 SchedApp
错误3错误C2039:'CheckCommand':不是'global的成员 namespace''e:\ phase3a \ tdisk \ workspace \ cbs \ source \ cbs \ schedapp \ source \ treesearchbox.cpp 21 1 SchedApp
当我尝试编译我的C ++应用程序时。
TreeSearchBox.hpp
#if !defined(TREE_SEARCH_BOX)
#define TREE_SEARCH_BOX
#include "standaloneconn.hpp"
class TREE_SEARCH_BOX : public STANDALONE_CONN
{
public:
TREE_SEARCH_BOX();
virtual int get_quest_dynstr(int idquest, LPTSTR opstr, PDYNOBJ dynpobj);
virtual int CheckCommand(PBASEWND pwnd, int idItem, HWND hwndCtl, int wNotifyCode, int indx);
virtual LPTSTR get_classname(){return _TEXT("TREE_SEARCH_BOX");}
};
#endif
TreeSearchBox.cpp
#include "cpptot.hpp"
#include "apptot.hpp"
#include "TreeSearchBox.hpp"
#include "lov.hpp"
//******************************************************************************
// Component: IFS/Scheduling
//
// File name: TreeSearchBox.cpp
//
// Purpose: Contains an object for connecting a standalone client directly to ORACLE
//
// Ver Date Sign History
// --- ---- ---- -------
// 150604 FARFLK Adding tree search functioanlity enhanced
//******************************************************************************
int TREE_SEARCH_BOX::get_quest_dynstr(int idquest, LPTSTR opstr, PDYNOBJ dynpobj){
return 0;//get_quest_dynstr(idquest, opstr, dynpobj);
}
int TREE_SEARCH_BOX::CheckCommand(PBASEWND pwnd, int idItem, HWND hwndCtl, int wNotifyCode, int indx){
return 0;
}
我很长时间都在努力纠正这个错误。请帮我。我做错了什么?
答案 0 :(得分:3)
一开始你有一个保护块:
#if !defined(TREE_SEARCH_BOX)
#define TREE_SEARCH_BOX
这很好。但这确实意味着你调用#define TREE_SEARCH_BOX
,这意味着TREE_SEARCH_BOX
被定义为无。因此,在编译时,预处理器会扫描您的文件,并用TREE_SEARCH_BOX
替换。这打破了您的代码,因为您现在正在尝试编译它:
int ::get_quest_dynstr(int idquest, LPTSTR opstr, PDYNOBJ dynpobj){ ...
其中::表示global namespace
。
有两种方法可以解决这个问题:
更改护栏
#if !defined(TREE_SEARCH_BOX_SOMETHING_ELSE)
#define TREE_SEARCH_BOX_SOMETHING_ELSE
更改您的班级名称。
我觉得有趣的是你不会因为你也试图编译而得到错误:
class : public STANDALONE_CONN{
但事实证明你可以像这样定义一个匿名类:
class : baseClass {
//bla
};
我想我今天学到了一些东西:)