gpt4 book ai didi

c++ - 对象上的范围解析运算符

转载 作者:行者123 更新时间:2023-11-30 05:28:19 25 4
gpt4 key购买 nike

在 C++ 中,我们有一个 operator::,它允许我们做这样的事情:

typedef std::pair<A, B> pairAB;
pairAB p;

pairAB::first_type a(42);
pairAB::second_type b("hello world");

p.first = a;
p.second = b;

我尝试在这种类型的对象上使用这个运算符:

pairAB p2;

p2::first_type a2(42);
p2::second_type b2("hello again");

p2.first = a2;
p2.second = b2;

编译器向我显示了error: C2510: 'p2' : left of '::' must be a class/struct/union,我想知道有什么技巧可以让我这样做?

最佳答案

获取变量的类型正是 decltype 关键字在 c++11 中的作用。

decltype(p2.first) a2 = 42;

在 c++11 之前,没有标准的方法来做到这一点。有一些特定于编译器的功能,例如 gcc 的 typeof 和基于库的实现,例如在 c++11 之前就已经存在的 Boost.Typeof 并且做类似的事情。

关于c++ - 对象上的范围解析运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36885361/

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