a class-key must be used when declaring a friend的问题

今天在游戏引擎的时候遇见了这样一个问题就是

在dev c++下

编写如下代码:

 

其中 ONLY_ONE的内容是

 

 

 

会出现一个 a class-ey muse be used when declaring a friend 的错误

最后发现只要在 friend后面加一个class 就好了

看来还是经验不错啊

 

具体就是会这样

### 关于 `IllegalArgumentException` 异常 当遇到 `java.lang.IllegalArgumentException: object is not an instance of declaring class` 这种异常时,通常意味着尝试调用的方法所属的类不是目标对象的实际声明类[^1]。 对于类型必须是参数化类型的场景下发生的 `IllegalArgumentException`,这往往涉及到泛型方法或构造器的不当使用。如果所提供的实例并非预期的具体实现类或是其子类,则会触发此类错误。例如,在利用反射机制创建对象的过程中指定的目标类与实际传入的对象不匹配就会引发这个问题。 针对此情况的一个常见原因是由于父类和子类间存在同名属性所引起的混淆状况。特别是在序列化操作期间,像Gson这样的库可能难以区分哪些字段应该被赋予特定值,从而造成非法参数异常的发生[^2]。 为了处理上述提到的关于类型需为参数化的Class问题,可以采取如下措施: #### 验证并修正传递给泛型方法的实际类型参数 确保作为参数提供的类确实是期望的那个具体类型或者是它的直接/间接子类。可以通过显式地指明类型来避免潜在歧义。 ```java // 正确做法:提供具体的参数化类型而非原始类型 Method method = clazz.getMethod("myGenericMethod", List.class); method.invoke(object, new ArrayList<String>()); ``` #### 使用确切的数据结构代替模糊定义 假如正在使用的集合框架允许的话,尽可能采用带有明确元素种类限定的容器形式,而不是开放式的接口表示法。 ```java List<Integer> integerList = Arrays.asList(1, 2, 3); // 明确指出列表中的元素类型 ``` #### 调整JSON解析逻辑以适应复杂的继承关系 如果有多个层次的继承并且各层之间共享相同的成员变量名称,那么应当调整数据绑定策略使得反序列化进程能够正确识别各个级别的属性归属。 ```json { "type": "child", "commonField": "value from child" } ``` 通过向JSON文档中加入额外的信息(比如"type"键),可以帮助诸如Jackson之类的处理器更好地理解输入源的真实意图,并据此做出恰当的选择去填充相应的实体对象。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值