65,187
社区成员




class Buf
{
public:
struct node
{
char node [ n ];
};
};
我希望在初始化的时候就确定node的size
所以我这样定义:
template< int num>
class Buf
{
public:
struct node
{
char node [ num ];
};
};
外部使用应该是:
Buf<10> buf1;
Buf<11> buf2;
这样就可以保证其大小,但是产生一个问题,如下:
这个buf类,我需要在其他地方通过一个容器对其管理,
问题1:
class BufMgr
{
public:
std::map < long ,Buf<size> > m_mgr; /// 这个地方如何声明,
};
问题2:
而一般情况下,针Buf模板类都是通过一个局部变量来传递的,如
long num = 10;
Buf<num> buf3;
而模板又不支持运行期确定其值,可以如何设计更好。
或者如何设计这个类体形,主要是不想通过动态来初始化。
class BaseBuf
{
public:
// some common interface...
};
template< int num>
class Buf : public BaseBuf
{
public:
struct node
{
char node_[ num ];
};
};
class BufMgr
{
public:
std::map < long , BaseBuf > m_mgr;
};