您的位置:程序门 -> .net技术 -> vc.net



namespace嵌套产生的问题,求解决


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


namespace嵌套产生的问题,求解决[已结贴,结贴人:liqian0267]
发表于:2007-02-09 10:29:55 楼主
我在vc中使用了两个namespace   ,想要各自namespace中的对象互相调用对方的方法,结果报错,这种情况如何解决呢   原型如下:
#include   "wert.h "
namespace   uuid   {
      using   namespace   uuid2;
      public   ref   class   form1   :   public   system::windows::forms::form
      {    
          uuid2::wert^   a;
        ...}
}


#include   "form1.h "
namespace   uuid2   {
      using   namespace   uuid;
      public   ref   class   wert   :   public   system::windows::forms::form
      {
          uuid::form1^   b;
        }
}

结果报错信息如下:
错误 2 error   c2871:   'uuid '   :   a   namespace   with   this   name   does   not   exist e:

我设想控件和主程序之间进行message传递,控间可以使用主程序实例,主程序也可以使用控间实例,似乎在vc.net中是不能互相引用的,有其它解决方法吗
发表于:2007-02-09 10:37:181楼 得分:80
你是两个项目??
发表于:2007-02-09 10:39:022楼 得分:0
做第三个项目
输出个两个接口   ia,   ib
form   实现ia
control   实现ib
通过接口调用
发表于:2007-02-09 10:43:093楼 得分:0
是一个项目里的,其中一个是控件,另一个是调用方,这两个部分之间需要大量的数据通信,所以曾经设想母体作observe,控间作subject,但是观察者模式还是需要互相知道对方类型,现在只能一方包含一方头文件,如果互相包含头文件的化就出现了两个命名空间找不到的情况
发表于:2007-02-09 10:46:174楼 得分:0
控件也需要调用方的一些数据,比如绘图环境和数据的提取在调用方,而绘图功能在控间上,因此我想控间能识别调用方并且从调用方得到graphics之类的数据
发表于:2007-02-09 11:12:005楼 得分:0
你都是使用内联方式操作类的所以出现这个问题
把你的类方法后置
写在cpp中类似
form1.h
....
namesapce   form
{
      ref   class   form1{
      ....
      public:
          void   test();
    };
 
}
form1.cpp
#include   "control.h "
using   namespace   form;
void   test()
{
      control::control1^   c1   =   gcnew   control::control1();
}

control.h
......
namespace   control
{
    ref   class   control1
    {
    ...
      public:  
        void   ctest();

  ...
    }
}
control1.cpp
...
#include   "form1.h "
using   namespace   control;
void   control1::ctest()
{
    form::form1^   f1   =   gcnew   form::form1();
}
发表于:2007-02-09 11:12:426楼 得分:10
有点错误
using   namespace   form;
void   test()
=====〉
void   form1::test()
...
发表于:2007-02-09 11:21:007楼 得分:10
关注..
发表于:2007-02-09 20:43:448楼 得分:0
hdt(倦怠)  
你好,我按照你的方法将控件的实现放在cpp中,如下:我在控件类中设了一个system::windows::forms::form^   parent;成员

在实现中有如下两个函数
ctltestcontrol::ctltestcontrol(system::windows::forms::form^   parentform)
{
          parent   =parentform;
}
system::void   ctltestcontrol::button1_click(system::object^     sender,                                   system::eventargs^     e)
{
        parentform1::form1^   nowparent   =safe_cast <parentform1::form1^> (parent);
        nowparent-> m_imember   =10;
        messagebox::show( "已经更改父窗体成员 ");
}

但是只要将控件从工具箱上脱出来首先会出现com错误,并且在编译时出现
错误 2 error   c2011:   'parentform1::form1 '   :   'class '   type   redefinition

我估计还是命名控件using   时出的错,怎么解决呢?
发表于:2007-02-17 06:05:469楼 得分:0
up


快速检索

最新资讯
热门点击