gpt4 book ai didi

c++ - 以 bitset 作为参数的模板类 的问题

转载 作者:行者123 更新时间:2023-11-30 02:08:28 26 4
gpt4 key购买 nike

我想用 C++ 编写一个类,其中一个参数是 bitset<size> .我想为该类的任何对象提供改变此“大小”的工具,但对于该对象应该保持不变。

如果我创建一个变量 const int size;并在构造函数中初始化它,然后它不会编译,因为要写入 bitset<size>需要 size是静态的,这将使类的所有对象都相同。

除了创建类模板并将大小作为 classname<size> 传递之外,还有其他方法吗? ?

谢谢但是.. 但这使得这个 Foo 类对象无论何时用作组合(对象作为数据成员)......是否有必要再次制作该类模板。我制作了一个类并将一个(#define BIT_SIZE 16 传递给 Foo 位;)它给出了对 Foo<16>::Foo() undefined reference 的编译错误。其中 Foo() 是构造函数。我认为它应该可以工作,因为那也是编译时间。我只想制作大小为 BIT_SIZE 位。我应该制作我的“下一级”类(class)模板吗??这些错误可能是由于其他错误造成的。但我检查了一遍又一遍。


是的,先生,我已经实现了,但是包含了头文件而不是 cpp 文件......当我将它们更改为 cpp 文件时......出现了多重声明错误。我在 linux ubuntu 上工作.. 当我把这些文件带到工作的 windows 中的 dev_cpp 时。可能是因为编译器自动完成了我需要做的事情。那我需要做什么。

最佳答案

模板参数应该是编译时常量;编译器将为不同大小的参数生成不同的类。如果你想为各种可能的大小使用单个位集类,那么使用,例如,Boost dynamic_bitset:

http://www.boost.org/doc/libs/1_47_0/libs/dynamic_bitset/dynamic_bitset.html

并将位集大小作为构造函数参数传递

关于c++ - 以 bitset 作为参数的模板类 <class_name> 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828892/

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