gpt4 book ai didi

c++ - C++ 中模板类的替代品?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:39 24 4
gpt4 key购买 nike

是否可以在不使用 C++ 模板的情况下定义泛型类。我已经为一种生成 C++ 代码的语言编写了一个编译器,但我没有在我的语言中包含模板构造。

我想知道的是,是否也可以将我的语言中的泛型类与我的语言一起使用。

尝试通过以下方式做到这一点:

为了实现一个新的数据结构(例如堆栈),我将其类型声明为“Data”,一个空类,并限制用户首先定义一个扩展 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})。

最佳答案

在 C++ 中似乎没有模板的替代品,这就是为什么它们被作为语言的基本功能包含在内。

关于c++ - C++ 中模板类的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35768131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com