kwc*_*kwc 3 c++ struct pointers
在C++程序中,我有一个结构,其中包含指向其自己类型的另一个实例的指针:
struct Foo
{
const Foo* ptr;
};
Run Code Online (Sandbox Code Playgroud)
我想声明并初始化这个结构的两个const实例,它们指向彼此:
const Foo f1 = {&f2};
const Foo f2 = {&f1};
Run Code Online (Sandbox Code Playgroud)
但是,这会导致编译时错误error: 'f2' was not declared in this scope(显然因为f1在f1之后声明,即使f1的声明引用它).
我正在努力做到可能和合理吗?如果是,我该如何使它工作?
一种解决方法可能是避免使f1 const,然后在声明f2之后重新分配指针f1.ptr = &f2;,但是如果可以的话我宁愿避免这种情况.
在命名空间范围,你可以做例如
namespace my_constants {
extern Foo const f1;
extern Foo const f2;
Foo const f1 { &f2 };
Foo const f2 { &f1 };
} // namespace my_constants
Run Code Online (Sandbox Code Playgroud)
我可以看到任何非常好的本地范围解决方案,但你原则上可以这样做
auto hack = []( Foo const* pfoo ) -> Foo const&
{
static Foo const other = {pfoo};
return other;
};
static Foo const f1{ &hack( &f1 ) };
Foo const& f2 = hack( 0 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |