STL不能作为类成员吗?( BCB5 )

javasky 2001-10-05 10:18:50
刚刚接触STL,遇到了不少问题,希望大侠指教。所在的环境是BCB5。我发现我不能在把vector <myclass,allocator<myclass> v在一个类中声明,令其作为一个类的成员。却能把其在这个类的一个函数体里声明它,令其作为一个局部变量。把其声名为一个全局变量,也出错。百思不得其解。代码太概如下:
//hello.h
#inlcude "myclass.h"
class Chello{
public:
//编译时出错
vector <myclass,allocator<myclass> v1;
void test();
}
void class::test(){
//没有出错
vector <myclass,allocator<myclass> v2;
}

//编译出错
extern vector <myclass,allocator<myclass> v3;

在hello.cpp里
//没有出错
vector <myclass,allocator<myclass> v3;
却正确,由于在hello.h中不能声明为extern所以,这一个v3达不到让别的类共享的目的。

由上可见,vector只有声明为局部变量时才能正常使用,很明显,我的意图是让我vector能被其它的类共享,声明为类成员与全局都失败,那还什么办法呢?是我的程序的语法出了错还是bcb支持上有问题?以前在vc上用template也不见得这么多的问题。
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt985 2002-01-11
  • 打赏
  • 举报
回复
34572关注! :)
javasky 2001-10-08
  • 打赏
  • 举报
回复
谢谢各位,问题现在已得到了解决。示例中的语法问题,是我匆忙间打错了。真正的原因是name space的问题,正确的声明是 std::vector <myclass,std::allocator<myclass> > v,具体原因我没有去追查,原因可能是,如果我们要让其成为类的成员,或声明其为全局变量,我们都在头文件中进行这个操作,而在头文头中,还没有进行using namespace std,所以导致了出错。而把它声明为局部变量时,已using了namespace std.
透明所说的问题,在我第一次编译时就遇到了,虽然以前也遇到过,但还是没有汲取教训。其实如果对应于bcb来说,allocator是可以用默认参数的,即只写std::vector<myclass> v就ok了,这样就可以减少出错。
gigix 2001-10-06
  • 打赏
  • 举报
回复

注意在写反括号的时候最好在两个反括号之间加一个空格。不然编译器有可能将两个反括号与“>>”算符混淆。
darkay 2001-10-06
  • 打赏
  • 举报
回复
同意Solstice(胖胖)的疑问
say 2001-10-06
  • 打赏
  • 举报
回复
gz
陈硕 2001-10-05
  • 打赏
  • 举报
回复
出错信息是什么?为什么你只写一个">" 而不是"> >"

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧