LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1245|回复: 6

怎样在class里定义一个一定大小的vector呢?[已解决]

[复制链接]
发表于 2005-11-27 10:14:58 | 显示全部楼层 |阅读模式

  1. #include <vector>
  2. class C51Memery
  3. {
  4. public:
  5.         C51Memery(void);
  6.         ~C51Memery(void);
  7.         int_8& get_inram( unsigned char address );
  8.         int_8& get_outram( unsigned short int address );
  9.         int_8 get_rom( unsigned short int address );
  10. private:
  11.         //模拟器的内存空间
  12.         std::vector<int_8> in_ram( 256 );                //位地址空间分布在in_ram中。
  13.         std::vector<int_8> out_ram( 65536 );
  14.         std::vector<int_8> rom( 65536 );
  15. };
复制代码


我这样定义,报错.
发表于 2005-11-27 16:45:52 | 显示全部楼层
在构造函数里干这事儿好了
回复 支持 反对

使用道具 举报

发表于 2005-11-27 17:36:51 | 显示全部楼层
能在类定义里初始化的只有static const int。按X11版的做。

不过这样好吗?虽然是内建类型,但是要建立两个65536大小的……如果是用户定义类型……
建议用vector::reserve()

而且,int_8是什么?不是int8_t吗?
回复 支持 反对

使用道具 举报

发表于 2005-11-27 18:20:26 | 显示全部楼层
你这只是声明, 这样就行了


  1. class C51Memery
  2. {
  3. public:
  4.         C51Memery(void);
  5.         ~C51Memery(void);
  6.         int_8& get_inram( unsigned char address );
  7.         int_8& get_outram( unsigned short int address );
  8.         int_8 get_rom( unsigned short int address );
  9. private:
  10.         //模拟器的内存空间
  11.         std::vector<int_8> in_ram;
  12.         std::vector<int_8> out_ram;
  13.         std::vector<int_8> rom;
  14. };

  15. C51Memery :: C51Memery(void) :in_ram( 256 ), out_ram( 65536 ), rom( 65536 ) {}

  16. ...
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-27 23:41:30 | 显示全部楼层
多谢了,按照你们所说我这样解决了.

另外,在那个文件里有定义int8_t吗?那个int_8是我自己定义的。
typedef unsigned char int_8;
回复 支持 反对

使用道具 举报

发表于 2005-11-27 23:44:33 | 显示全部楼层
Post by freesky64
typedef unsigned char int_8;


#include <sys/types.h>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-28 23:09:41 | 显示全部楼层
Post by daemeon
#include <sys/types.h>

是可以移植的吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表