使用模板类我有类是这样的:没有模板
template<size_t MAX_SIZE>
struct Buffer{
size_t size;
char data[MAX_SIZE]; // this must be inside the struct itself
constexpr static size_t max_size = MAX_SIZE;
};
我需要能够通过这个类的功能是不应该使用的模板,目前我在做这样的事情:
void process(size_t &size, char *data, size_t max_size);
int main(){
Buffer<1024> b;
process(b.size, b.data, b.max_size);
}
有没有更好的方法来做同样的事情?我可以考虑基类,并通过引用传递,但它太复杂,无法正确。
(这是不实际的代码,请如果有语法错误,不讲究。)
你可能想避免这个问题,但是:为什么过程不允许使用模板?它允许使用什么,为什么? – IceFire
很好的问题。理由对我来说不是100%明确的 - 直觉。冥想我会。认真 - 我想要process()的代码在不同的.o文件中 – Nick
你的直觉可能是你不想让进程成为模板。这需要更深入的思考:将MAX_SIZE作为模板参数意味着它定义了类型。因此,流程必须成为处理多种不同类型的模板。如果Buffer实际上只是一种类型,那么MAX_SIZE不应该是模板参数。 – IceFire