我正在學習C++。我有一個Classroom類,它應該以某種方式運行,具體取決於正在使用的Configuration對象。創造這樣的課堂對象時,我可以傳遞配置對象在構造函數中:如何使用對象實例作爲模板參數?
class Classroom {
private:
Configuration conf;
public:
Classroom(Configuration conf_){
conf = conf_;
}
/** more member functions that use conf **/
};
但我認爲這將是涼爽如果我可以用一個模板吧。創建Classroom對象時,Configuration對象將作爲模板參數傳遞。這是我想出了,但它不工作:
template<Configuration &conf>
class Classroom {
int doSomething(int n){
// member function that uses data in Configuration object
return n + conf.config_1;
}
};
struct Configuration {
public:
int config_1;
};
int main() {
Configuration conf;
conf.config_1 = 95;
Classroom<conf> myClassroom;// doesn't work
}
它說:錯誤:「CONF」的值不是一個常量表達式使用。
我錯過了什麼?
模板實例化由編譯器完成。因此,在編譯時應該知道你作爲模板參數傳遞的內容 –
缺少關鍵字'typename或class'。 – Raindrop7
_「但是我認爲如果我可以使用它的模板會更酷。」_不要做那些事,因爲你認爲它們是_cool_。在第一個地方有一個合理的用例。 – user0042