【发布时间】:2018-10-15 06:49:04
【问题描述】:
鉴于场景,
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) 运算符可以重载,这将是可能的。但是,这是不可能的(至少现在是这样)。是否有解决方法可以使示例正常工作?
【问题讨论】:
-
在
A中创建引用子对象成员的引用成员? -
struct b 不会保持不变。它可以是另一个结构,在 A 中声明,并且具有不同数量的不同类型的数据成员。我将对其进行更新以使其更加具体。 (示例更新)
-
能够重载
.运算符将是完美的。 -
如果解决方案增加了
A的大小并且以这种方式使用成员的效率不如直接访问成员的效率那么高,是否可以? -
@aschepler 结构大小或效率不是问题。在这一点上,我需要简洁的语法。
标签: c++ operator-overloading overloading