[英]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::
。 给定这里的信息量很难说。
编辑:
现在,错误消息更加清晰了,看来您没有将正确的目标文件包含到链接器中。
编辑:您还记得同时链接Ao
和Bo
来创建您的二进制文件吗? 听起来好像没有加入Ao
,并且编译器没有内联静态函数。
你也有一个;
在您的功能结束时,绝对不需要此功能,并且该功能可能无效(我不记得了)
当您定义函数validLocation()
,您是否在一个单独的文件(.cpp validLocation()
中进行定义? 如果是这样,则需要在函数名称前添加A ::,如下所示:
static bool A::validLocation(int _x) // within class A
{
return false;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.