我在班上有这个函数的定义。
.hpp
文件:
class SomeClass
{
public:
static string DoStuff(string s);
};
.cpp
文件:
#include "header.hpp"
string SomeClass::DoStuff(string s)
{
// do something
}
编译说:
**error C2039: 'DoStuff' : is not a member of 'SomeClass'**
有人可以帮忙吗?
编辑: 实际违规代码
标题定义
class DDateTime{
public:
static string date2OracleDate(DATE Date);
}
string DDateTime::date2OracleDate(DATE Date)
{
string s;
s="TO_DATE('" + DDateTime::DateFormat("%d/%m/%Y",Date) + "','dd/MM/YYYY')";
return s;
}
答案 0 :(得分:1)
通常,.cpp
个文件必须包含匹配的.h
或.hpp
文件。
这是这种情况吗?
您还可能遇到名称空间问题(.cpp
文件中缺少名称空间或名称空间外的静态方法定义,依此类推。)。
实际上,在我们拥有真正破碎的代码之前很难回答。
此外,我不知道这是否是示例代码,但您的头文件中似乎使用了using std::string
或using namespace std
之类的内容。
这是个坏主意,因为它会对包含标题的每个文件进行规范。如果有人想要使用您的头文件但又不想“使用”std
,因为string
是其中一个类的名称?
答案 1 :(得分:0)
您是否已将头文件包含在cpp文件中?
答案 2 :(得分:0)
可能是命名空间问题?你可以有一个带有静态成员函数的SomeNamespace :: SomeClass和一个没有静态成员函数的外部命名空间中的:: SomeClass。
答案 3 :(得分:0)
你错过了
#include<string>
在你的头文件中?
答案 4 :(得分:0)
您是否尝试从指向实例的双指针调用DoStuff?例如:
SomeClass **类; 类 - &GT; DoStuff();
如果是这样的话:
SomeClass **类; (*类) - &GT; DoStuf();