gpt4 book ai didi

c++ - 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样

转载 作者:行者123 更新时间:2023-11-28 04:31:39 25 4
gpt4 key购买 nike

鉴于场景,

template <bool T>
struct A{
struct B{
int x;
double y;
}
struct C{
char c;
std::string k;
}
using type = std::conditional<T, B, C>::type;
type b;
}

我想访问数据成员,例如:

int main(){
A<true> object_1;
A<false> object_2;
cout << object_1.x;
cout << object_2.k;
}

如果可以重载 .(dot) 运算符,这将是可能的。然而,这是不可能的(至少现在)。是否有使该示例工作的解决方法?

最佳答案

您不能重载 .,这是正确的。但是,您可以重载 ->,如果这也是您的选择?

operator-> 必须返回一个本身支持 operator-> 的类型,例如一个原始指针适合这个:

template <bool T> struct A
{
struct B
{
int x;
double y;
};
struct C
{
char c;
std::string k;
};
using type = std::conditional<T, B, C>::type;
type b;

type* operator->() { return &b; }
};

你可以这样使用它:

int main()
{
A<true> object_1;
A<false> object_2;
cout << object_1->x;
cout << object_2->k;
}

关于c++ - 访问数据成员(本身是对象)的数据成员,就好像它们是类成员一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52749154/

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