环境:VC.Net2003、MFC对话框项目。
我创建了自己的 namespace,在其内定义了自己的 CString 类(与MFC的CString同名):
namespace MyLibrary
{
class CString : public ::CString //继承、扩展MFC的CString
{
};
}现在需要的功能是,在使用CString时,直接写CString就是默认使用MyLibrary::CString,也就是说,如这样写:
CString str; //需要MyLibrary::CString被优先匹配但是,不能影响MFC的其他类的使用,如CDialog等没有被重名的类的使用就应该像本来一样。如何实现?谢谢!

解决方案 »

  1.   

    using 声明不行吗?
    不过感觉尽量不要这样,很容易出错的,
    -----------------------------------------
    偶从来没用过 :)
      

  2.   

    to theCFan(郁闷的饿猫)using namespace MyLibrary; //这样后,
    //到了CString的地方编译器报告 不明确的符号我想namespace的本意就是用来解决同名问题的,不过如果发生重名了,每一次都要写一个MyLibrary::这样还不如不解决。
      

  3.   

    to  chuanke((C ) 2005【空间代数】. All rights reserved .)#define CString MyLibrary::CString //我只想到这样,可是却出现了更多的问题、全局效应等如:
    1、当你真的明确写一个MyLibrary::CString时,宏却把其替换为:MyLibrary::MyLibrary::CString了。
    2、因为宏的全局效应,在其他namespace中的同名CString全部受影响。
      

  4.   

    using MyLibrary::CString; //这样即可这个问题,经过微软的认真考虑和设计。