嵌套命名空间中使用的不完整类型

时间:2016-03-28 04:46:09

标签: c++

下面的代码告诉我:

  

在成员函数'void A :: method()'中:错误:使用不完整类型'B'   在嵌套的名称说明符B :: meth();

我在SO上搜索了这个错误的解决方案,发现我可以使用[self.session sendMessage:@{"command": "start"} replyHandler:nil errorHandler:nil] 但没有帮助

- (void) session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler

2 个答案:

答案 0 :(得分:3)

update-alternatives行定义时,A::method仅以名称而非其完整定义而为人所知。

在使用B之前,您必须确保已知B的完整定义。

选项1

B::meth()的定义之前移动B的定义。

A

选项2

class B { public: void static meth() { } }; class A { public: void method() { B::meth(); } }; 的定义之后移动A::method的定义。

B

答案 1 :(得分:0)

问题是A类在定义B类之前试图访问B类成员。您应该首先定义B类。此外,考虑重命名类以使它们按字母顺序排列。