none
请高手帮我看看这样做,对吗? RRS feed

  • 常规讨论

  • 请高手帮我看看这样做,对吗?自己一个人研究,终于没有提示错误了,编译通过了,但好像感觉什么地方不对!嘿嘿! 创建了一个winform项目,取名为mycesi mycesi.h代码如

    #pragma once
    
    #include "cesiclass.h"
    
    #include "myclass.h"
    
    
    namespace mycesi 
    {
    
    	using namespace System;
    
    	using namespace System::ComponentModel;
    
    	using namespace System::Collections;
    
    	using namespace System::Windows::Forms;
    
    	using namespace System::Data;
    
    	using namespace System::Drawing;
    
    
    	/// <summary>
    
    
    
    	/// Form1 摘要
    
    
    
    	///
    
    
    
    	/// 警告: 如果更改此类的名称,则需要更改
    
    
    
    	///          与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的
    
    
    
    	///          “资源文件名”属性。否则,
    
    
    
    	///          设计器将不能与此窗体的关联
    
    
    
    	///          本地化资源正确交互。
    
    
    
    	/// </summary>
    
    
    
    	public ref class Form1 : public System::Windows::Forms::Form
    
    	{
    
    	public:
    
    		Form1(void)
    
    		{
    
    			InitializeComponent();
    
    			//
    
    			//TODO: 在此处添加构造函数代码
    
    			//
    
    		}
    
    	protected:
    
    	          /// <summary>
    
    		/// 清理所有正在使用的资源。
    
    		/// </summary>
    
    		~Form1()
    
    		{
    
    			if (components)
    
    			{
    
    				delete components;
    
    			}
    
    		}
    
    
    	private: System::Windows::Forms::Button^  button1;
    
    
    	protected: 
    
    
    	private:
    
    
    
    		/// <summary>
    
    
    
    		/// 必需的设计器变量。
    
    
    
    		/// </summary>
    
    
    
    		System::ComponentModel::Container ^components;
    
    
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
    	{
    
    	}
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
    
    		cesiclass^ cl=gcnew cesiclass();
    
    		mycesi::Imy^ imy=gcnew mycesi::myclass();
    
    		cl->cc(imy);
    
    
    
    	}
    
    
    	};
    
    
    }
    
    
    
    


    Imy.h里的代码定义了一个Imy接口我发现不用namespace mycesi的话,会提示错误所以加了这个,没有提示错误了

    namespace mycesi
    
    {
    
    	public interface class Imy
    
    	{
    
    		void nihao();
    
    	};
    
    };
    
    

    myclass.h的代码

    #pragma once
    
    
    
    #include "Imy.h"
    
    
    
    namespace mycesi
    
    {	
    
    ref class myclass: Imy
    
    {
    
    public:
    
    	myclass(void);
    
    	virtual void nihao();
    
    };
    
    };
    
    

    myclass.cpp的代码

    #include "StdAfx.h"
    
    #include "myclass.h"
    
    
    
    mycesi::myclass::myclass(void)
    
    {
    
    }
    
    
    
    void mycesi::myclass::nihao()
    
    {
    
    	System::Windows::Forms::MessageBox::Show("测试成功");
    
    }
    
    

    cesiclass.h的代码

    #pragma once
    
    
    
    #include "myclass.h"
    
    
    
    namespace mycesi
    
    {
    
    ref class cesiclass
    
    {
    
    public:
    
    	cesiclass(void);
    
    	void cc(mycesi::Imy^ n);
    
    };
    
    };
    
    
    cesiclass.cpp的代码

    #include "StdAfx.h"
    
    #include "cesiclass.h"
    
    
    
    
    
    mycesi::cesiclass::cesiclass(void)
    
    {
    
    }
    
    
    
    void mycesi::cesiclass::cc(mycesi::Imy ^n)
    
    {
    
    	n->nihao();
    
    }
    
    

    然后编译通过,无错误提示,运行后,点按纽控件也显示了对话框。但我发现这样做方法上有问题,好像不正确。但又不知道应该如何做,请高手指点
    2009年12月8日 15:20