使用模板類我有類是這樣的:沒有模板
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