[英]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;
。
我想使用一個函數返回與模板類一起使用的結構的年份。 在這種情況下必須使用兩個不同的功能將使擁有模板類的目的無法實現。 我現在的布局基本上是structs
是classes
, Year()
是每個函數。
我想替代方法是只具有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.