繁体   English   中英

静态成员函数未按预期运行

[英]Static member functions not acting as expected

我有以下未按预期编译的代码。 我有一个具有静态成员函数的类,另一个包含试图使用它的标头的类。 它似乎不起作用。

static bool validLocation(int _x) // within class A
{ 
    return false;
};

B类包括A类,并且在其功能之一中具有以下调用:

if (!(A::validLocation(180)))
    continue;

显然,这些是出于阅读目的而简化的,但是为什么不能接受呢?

抱歉,含糊不清。 至于错误信息:

  "A::validLocation(int)", referenced from: B::functionThatCallsThis() in B.o

Symbols not found.
Collect2: ld returned 1 exit status

静态函数是公共的,如头文件中所声明。

从您给出的错误消息中,我将假定您没有将对象链接在一起,或者您将validLocation()声明为自由函数,因为在定义之前我没有看到A:: 给定这里的信息量很难说。

编辑:

现在,错误消息更加清晰了,看来您没有将正确的目标文件包含到链接器中。

编辑:您还记得同时链接AoBo来创建您的二进制文件吗? 听起来好像没有加入Ao ,并且编译器没有内联静态函数。

你也有一个; 在您的功能结束时,绝对不需要此功能,并且该功能可能无效(我不记得了)

当您定义函数validLocation() ,您是否在一个单独的文件(.cpp validLocation()中进行定义? 如果是这样,则需要在函数名称前添加A ::,如下所示:

static bool A::validLocation(int _x) // within class A
{ 
    return false;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM