繁体   English   中英

C ++访问变量而不使用其名称?

[英]C++ Access variable without using its name?

好的,真的不确定如何解释这一点,但我将尝试一下:

我试图找到一种不使用变量名就可以访问变量的方法吗? 我有两个函数执行的功能完全相同,只是变量名不同。 对我来说,拥有这两个功能似乎很愚蠢,仅因为一个结构具有相同的类型但名称不同?

说我有一个模板类:

template<class T>
class Controller
{
private:
    T Object;
public:
    bool YearCompare(int year1)
    {
        if (Object.???? == year1)
            return 1;
        return 0;
    }
};

说我有结构:

struct Container
{
    int BuildYear;
    int Volume;
};
struct Fruit
{
    int GrowthYear;
    string Name;
};

我的选择将是: Controller<Container> Glass; Controller<Fruit> Apple;

我想使用一个函数返回与模板类一起使用的结构的年份。 在这种情况下必须使用两个不同的功能将使拥有模板类的目的无法实现。 我现在的布局基本上是structsclassesYear()是每个函数。

我想替代方法是只具有static bool YearCompare(int year1, int year2)

我认为这是不可能的。。尽管有任何帮助,谢谢。

编辑: Year()实际上是我在这里描述的一个更大的函数,因此不必继续重复它。

由于您说两个结构都具有Year()方法,因此可以简单地调用它,例如:

bool YearCompare(int year1)
{
    return (Object.Year() == year1);
}

否则,也许定义一些基于结构类型返回适当年份的适配器:

template<class T>
struct ControllerAdapter
{
};

template<class T, class Adapter = ControllerAdapter<T> >
class Controller
{
private:
    T Object;
public:
    bool YearCompare(int year1)
    {
        return (Adapter::GetYear(Object) == year1);
    }
};

...

struct Container
{
    int BuildYear;
    int Volume;
};

template<>
struct ControllerAdapter<Container>
{
    static int GetYear(const Container &c) { return c.BuildYear; }
};

struct Fruit
{
    int GrowthYear;
    string Name;
};

template<>
struct ControllerAdapter<Fruit>
{
    static int GetYear(const Fruit &f) { return f.GrowthYear; }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM