簡體   English   中英

如何在沒有模板類的情況下模板成員變量?

[英]How do I template a member variable without templating the class?

我有一門沒有模板的課,叫做Food。 在食物內部,有蘋果指針的向量。 蘋果在Food中也是一類。 蘋果類有兩個指向另一個類的向量和一個比較器。 我要等到運行時才能知道它們將是哪種類型的比較器。

我需要將比較器作為模板。 兩者可能都有不同的比較器,這就是為什么我無法模板化Apple。 如果我模板化Apple,那么Food的Apple指針向量將被破壞,因為可能有2個比較器。

我想我可以用2個獨立的比較器來模板化Apple,但是我覺得有一種更優雅的方法。 另外,如果我想在某個時候更改比較器中間程序怎么辦,這就是為什么它也不起作用的原因。

是否可以在沒有模板的情況下為比較器提供模板? 還是有其他解決方案

class Food {
class Apple {
    vector<Pointer, Comparator> container_one;
    vector<Pointer, Comparator> container_two;
}

vector<Apple *> appleContainer
};

模板參數需要在編譯時解析,因此無法在非模板類中包含“未解析”的模板成員。

看起來您需要的是繼承而不是模板。 創建一個類Comparator和其他子類,例如ComparatorAComparatorB 然后在您的蘋果中存儲兩個Comparator*類型的對象,每個向量一個(或每個向量一個)。 在這里,無論分配基類的對象還是子類的對象都無所謂,可以同時使用-使用虛擬函數,可以在運行時解析適當的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM