我想要做的是:一個簡單的存儲類,定義爲一個儘可能通用的模板。並且能夠從這個類派生另一個,它可以接受任何東西,將它轉換爲int
(算法在這裏不相關),並將其存儲在底層類中。具有不同簽名的多態性和重載函數
但是,這並不像預期的那樣工作。這裏是最小的測試情況下,我寫道:
template<typename T>
class A {
public:
void f(T& foo) { }
};
class B : public A<int> {
public:
template<typename T>
void f(T& foo) { }
};
int main() {
A<int>* ptr = new B;
ptr->f("foo");
delete ptr;
return 0;
}
當然,這並不工作:
[email protected]:~/Workspace/Test/src$ icpc -o Test Test.cpp
Test.cpp(16): error: a reference of type "int &" (not const-qualified) cannot
be initialized with a value of type "const char [4]"
ptr->f("foo");
^
compilation aborted for Test.cpp (code 2)
有什麼辦法來強制編譯器使用方法定義從B類,或者這是一個真的不好主意?
-
編輯地:繼承公衆。
感謝您的幫助解釋。顯然,我不得不多想一想...... – Pierre