处理这种情况的最佳做法是什么?
hạng A {
riêng tư:
std::vector derp;
công cộng:
struct B { ... };
void foo(B b);
}
(问题是这段代码会说“错误:使用未声明的标识符‘B’”我想我可以通过做类似的事情来解决问题
hạng A {
công cộng:
struct B { ... };
void foo(B b);
riêng tư:
std::vector derp;
}
但这看起来很奇怪而且不是正确的解决方案。另外作为旁注,如果我要写那个,我应该这样写吗?
cấu trúc A {
struct B { ... };
void foo(B b);
riêng tư:
std::vector derp;
}
Bạn có thể sử dụng B
的前向声明在声明之前 derp
如果你不想移动 B
的定义在声明之前 derp
.
hạng A {
công cộng:
struct B;
riêng tư:
std::vector derp;
công cộng:
struct B { ... };
void foo(B b);
};
但是,从物理布局的角度来看,công cộng
类的一部分应该在其 private
之前部分。你想要 công cộng
用户首先看到的部分。
鉴于此,我认为使用它会更好:
hạng A {
công cộng:
struct B { ... };
void foo(B b);
riêng tư:
std::vector derp;
};
这解决了 B
的问题未在声明成员变量之前声明/定义 derp
.它还将 công cộng
private
前面的部分部分。
Tôi là một lập trình viên xuất sắc, rất giỏi!