小编Adr*_*ian的帖子

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

让我们假设我们有两个类

struct A
{
    int x = 1;
};

struct B
{
    int y = 2;
};
Run Code Online (Sandbox Code Playgroud)

我想要有返回成员值的模板(在AI的情况下想要返回"x"的值,如果BI想要返回"y"的值).

示例电话:

const auto myVariable = f<A>();
Run Code Online (Sandbox Code Playgroud)

要么

A a;
const auto myVariable = f<A>(a);
Run Code Online (Sandbox Code Playgroud)

我不想有2个模板专业化 - 理想情况下它会是一个带有某种"if语句"的模板,但也许它不可能?

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

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

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

c++ templates metaprogramming c++11

1
推荐指数
1
解决办法
75
查看次数

标签 统计

c++ ×1

c++11 ×1

metaprogramming ×1

templates ×1