注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dingchaoqun12 的博客

上海股票期货开户

 
 
 

日志

 
 
 
 

STL不能作为类成员吗?( BCB5 ) - CSDN论坛 - CSDN.NET  

2013-02-17 00:58:45|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

STL不能作为类成员吗?( BCB5 ) [问题点数:0分]

楼主 发表于: 2001-10-05 22: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也不见得这么多的问题。
出错信息是什么?为什么你只写一个">" 而不是"> >"

注意在写反括号的时候最好在两个反括号之间加一个空格。不然编译器有可能将两个反括号与“>>”算符混淆。
谢谢各位,问题现在已得到了解决。示例中的语法问题,是我匆忙间打错了。真正的原因是name space的问题,正确的声明是 std::vector <myclass,std::allocator<myclass> > v,具体原因我没有去追查,原因可能是,如果我们要让其成为类的成员,或声明其为全局变量,我们都在头文件中进行这个操作,而在头文头中,还没有进行using namespace std,所以导致了出错。而把它声明为局部变量时,已using了namespace std.
透明所说的问题,在我第一次编译时就遇到了,虽然以前也遇到过,但还是没有汲取教训。其实如果对应于bcb来说,allocator是可以用默认参数的,即只写std::vector<myclass> v就ok了,这样就可以减少出错。
京 ICP 证 070598 号北京创新乐知信息技术有限公司 版权所有世纪乐知(北京)网络技术有限公司 提供技术支持江苏乐知网络技术有限公司 提供商务支持



引文来源  STL不能作为类成员吗?( BCB5 ) - CSDN论坛 - CSDN.NET
  评论这张
 
阅读(346)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017