gpt4 book ai didi

c++ - 通过对象访问类子类型

转载 作者:行者123 更新时间:2023-11-27 23:43:59 26 4
gpt4 key购买 nike

class Foo{

public:
struct Bar{};

};

...

Foo foo;

foo.Bar bar; //error

我的编译器说 struct Foo::Bar 的使用无效。当然,如果我愿意,我可以命名子类 Foo::Bar 但如果 foo 具有非常长的嵌套模板类型和/或使用 auto 创建,那么它会像这样通过对象访问子类型很方便。

*编辑:明确地说,我想创建一个 Foo::Bar 类型的对象,而不必编写 Foo::

最佳答案

按照类似的先前响应,使用 decltype specifier :

class Foo{

public:
struct Bar{};

};

int main() {
Foo foo;
decltype(foo)::Bar bar;
const Foor foofoo;
decltype(foofoo)::Bar barbar;
}

编辑:包括引用或指针的解决方案

#include <type_traits>
...

void fref(const Foo &foo) {
typename std::remove_reference<decltype(foo)>::type::Bar bar;
}

void fpointer(Foo *foo) {
typename std::remove_reference<decltype(*foo)>::type::Bar bar;
}

关于c++ - 通过对象访问类子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52251416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com