c ++静态函数没有用

时间:2010-06-24 14:48:16

标签: c++ static function

我在班上有这个函数的定义。

.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;
}

5 个答案:

答案 0 :(得分:1)

通常,.cpp个文件必须包含匹配的.h.hpp文件。

这是这种情况吗?

您还可能遇到名称空间问题(.cpp文件中缺少名称空间或名称空间外的静态方法定义,依此类推。)。

实际上,在我们拥有真正破碎的代码之前很难回答。


此外,我不知道这是否是示例代码,但您的头文件中似乎使用了using std::stringusing 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();