gpt4 book ai didi

c++ - 在 C++ 中如何使用模板调用提供类型的特定成员

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:11 26 4
gpt4 key购买 nike

假设我们有两个类

struct A
{
int x = 1;
};

struct B
{
int y = 2;
};

我想要一个返回成员值的模板(如果是 A,我想返回值“x”,如果是 B,我想返回值“y”)。

调用示例:

const auto myVariable = f<A>();

A a;
const auto myVariable = f<A>(a);

我不想有 2 个模板特化 - 理想情况下它是一个带有某种“if 语句”的模板,但也许这是不可能的?

它可以用 C++11 编写(但不能用 C++14)。

一般来说,当您遇到此类问题时,您是如何使用模板的——相当大的模板,只有一两个地方需要从不同的成员中获取值——这可以根据该变量的类型推断出来。

问题:不必要的,不允许修改类 A 和 B

最佳答案

为什么要使用模板?

int f(const A& a) { return a.x; }
int f(const B& b) { return b.y; }

关于c++ - 在 C++ 中如何使用模板调用提供类型的特定成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908543/

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