#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中是不能互相引用的,有其它解决方法吗
9 个解决方案
#1
你是两个项目??
#2
做第三个项目
输出个两个接口 IA, IB
FORM 实现ia
control 实现ib
通过接口调用
输出个两个接口 IA, IB
FORM 实现ia
control 实现ib
通过接口调用
#3
是一个项目里的,其中一个是控件,另一个是调用方,这两个部分之间需要大量的数据通信,所以曾经设想母体作Observe,控间作subject,但是观察者模式还是需要互相知道对方类型,现在只能一方包含一方头文件,如果互相包含头文件的化就出现了两个命名空间找不到的情况
#4
控件也需要调用方的一些数据,比如绘图环境和数据的提取在调用方,而绘图功能在控间上,因此我想控间能识别调用方并且从调用方得到Graphics之类的数据
#5
你都是使用内联方式操作类的所以出现这个问题
把你的类方法后置
写在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();
}
把你的类方法后置
写在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();
}
#6
有点错误
using namespace form;
void test()
=====〉
void form1::test()
...
using namespace form;
void test()
=====〉
void form1::test()
...
#7
关注..
#8
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 时出的错,怎么解决呢?
你好,我按照你的方法将控件的实现放在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 时出的错,怎么解决呢?
#9
up
#1
你是两个项目??
#2
做第三个项目
输出个两个接口 IA, IB
FORM 实现ia
control 实现ib
通过接口调用
输出个两个接口 IA, IB
FORM 实现ia
control 实现ib
通过接口调用
#3
是一个项目里的,其中一个是控件,另一个是调用方,这两个部分之间需要大量的数据通信,所以曾经设想母体作Observe,控间作subject,但是观察者模式还是需要互相知道对方类型,现在只能一方包含一方头文件,如果互相包含头文件的化就出现了两个命名空间找不到的情况
#4
控件也需要调用方的一些数据,比如绘图环境和数据的提取在调用方,而绘图功能在控间上,因此我想控间能识别调用方并且从调用方得到Graphics之类的数据
#5
你都是使用内联方式操作类的所以出现这个问题
把你的类方法后置
写在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();
}
把你的类方法后置
写在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();
}
#6
有点错误
using namespace form;
void test()
=====〉
void form1::test()
...
using namespace form;
void test()
=====〉
void form1::test()
...
#7
关注..
#8
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 时出的错,怎么解决呢?
你好,我按照你的方法将控件的实现放在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 时出的错,怎么解决呢?
#9
up