[英]Can I access a static member function on a class/struct which I don't have any forward declaration?
库的.cpp文件中声明了一个结构,我想在此结构上调用静态成员函数。 我无法控制这个图书馆。 除了( DesiredStruct
)之外,没有其他向前声明。
nasty.hpp (header for library):
//nasty's forward declaration
class Nasty {
struct DesiredStruct;
DesiredStruct *mDesiredStruct;
...
}
编写我自己的完整前向声明是不可行的,因为类型上的#ifdef太多,而且定义中很难正确。
nasty.cpp: (code in the library I have no control over)
struct Nasty::DesiredStruct {
...
public:
static void desired_member() { ... }
}
我想打电话给Nasty::DesiredStruct::desired_member();
但是编译器不会在没有前向声明的情况下放任我,而且我做出前向声明的任何尝试都失败了。
我不知道这是否重要,因为desired_member是静态的,但是我可以使用指向Nasty的指针。
我可以做任何技巧来进行前向声明,所以我调用此方法吗?
最简洁的答案是不。”
该库的提供程序已使Nasty::DesiredStruct
不透明。 也就是说,该结构的完整声明和定义完全包含在源文件中,而无法从头文件中获得。 这样做的明确目的是不允许您去做您想做的事情。
您唯一的选择是:
不要尝试将方法实现复制到您控制的文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.