是否有可能一個定義泛型類沒有在C++中使用模板。我已經爲生成C++代碼的語言編寫了一個編譯器,但是我沒有在我的語言中包含模板構造。在C++中的模板類的替代品?
我想知道這是什麼可能泛型類在我的語言和我的語言。
的試圖通過以下方式做到這一點:
爲了實現一個新的數據結構我聲明其類型爲「數據」,一個空的類,並施加於用戶的限制,以(例如堆疊)。首先定義一個擴展Data的新類(例如myData),並僅使用myData對象和數據結構。
Stack.h定義:
#ifndef STACK_H
#define STACK_H
#include <stack>
class Data{};
class Stack {
private:
std::stack<Data*> st;
public:
bool empty() {return st.empty();}
int size() {return st.size();}
void pop() {st.pop();}
Data* top() {return st.top();}
void push(Data &e) {st.push(&e); }
};
#endif
從用戶「的myData」的
預期的定義:
class myData: public Data{
public:
int a;
myData (int A): a(A){}
myData(){}
myData (const Data& x) {
}
myData& operator= (const Data& x) {
}
int getData(){return a;}
};
試圖運行下面的main():
int main(){
stack<Data*> st;
myData A(10);
st.push(&A);
printf("%u\n", &A);
printf("Size: %d\n", (int)st.size());
myData B;
Data *C = (st.top());
B = *((myData*)C);
printf("%u\n", C);
printf("%d\n", B.getData());
return 0;
}
我想要知道有沒有更好的應用來嘗試做更有組織和適當的相同工作。你可以假設我的語言是(C++ - {template classes})。
你可以看看用其他語言完成了什麼:https://en.wikipedia.org/wiki/Generic_programming – Garf365
是的,還有其他機制可以提供通用性,並且你自己提供了一個。然而,這個問題沒有什麼價值,因爲它本質上是「C++可以做些什麼來代替這個問題」,這是不可能達成任何有建設性的答案的。因此VTC。 –