2.0 KiB
2.0 KiB
id, status, severity, category, date, updated, reporter, related
| id | status | severity | category | date | updated | reporter | related |
|---|---|---|---|---|---|---|---|
| VDE-016 | open | critical | bug | 2026-07-27 | 2026-07-27 | ViewDesign | VDE-001, VDE-005, VDE-010 |
VDE-016: ssi_boolean.cpp SSICurveData 名称解析失败
问题描述
v1.0.3 尝试将 SSICurveData 移出匿名 namespace、添加 #include <iterator> 和 using vde::brep::ClassResult;,但 仍无法通过 GCC 编译。
GCC 错误提示 did you mean 'vde::brep::ClassResult'? 说明符号可见但非限定名查找失败 — 可能是文件中多处匿名 namespace 嵌套导致的 scope 混淆。
当前编译错误 (v1.0.3)
error: 'SSICurveData' was not declared (did you mean 'vde::brep::SSICurveData'?)
at: compute_all_ssi() return type, build_face_cutting_planes() parameter
error: 'begin' was not declared in this scope (even with #include <iterator>)
error: 'end' was not declared in this scope
error: 'ClassResult' was not declared (did you mean 'vde::brep::ClassResult'?)
at: classify_points() return type
分析
- SSICurveData 的 forward declaration 和定义在
vde::brep命名空间内正确,但 GCC 仍需要全限定名vde::brep::SSICurveData— 可能是文件中多个匿名 namespace 导致对作用域的理解与 MSVC 不同 - begin/end —
#include <iterator>已添加,仍报错 — 可能是 SSICurveData 错误导致的级联失败 - ClassResult —
using vde::brep::ClassResult;在namespace vde::brep内部冗余,无效 — 需直接使用全限定名
建议修复方式
将文件中出错的非限定符号改为全限定名:
// Line 509:
vde::brep::SSICurveData // 替代 SSICurveData
// Line 612:
const std::vector<vde::brep::SSICurveData>& // 替代 SSICurveData
// Line 643:
vde::brep::ClassResult // 替代 ClassResult
或在 namespace vde::brep 作用域内、匿名 namespace 之前添加局部 using:
// 在所有匿名 namespace 之前
using vde::brep::SSICurveData;
using vde::brep::ClassResult;
当前 Workaround
ViewDesign 排除 vde_brep 及其依赖。