Ответы пользователя по тегу C++
  • Как передать указатель на массив в качестве аргумента функции?

    ReLogan
    @ReLogan Автор вопроса
    @Teivaz , спасибо за развернутый ответ!
    Компилятор на код больше не ругается, но при дебаге видает две ошибки, смысл которых я так и не вкурил, гугл не особо помог.

    2>WindowsFormsApplication1.obj : error LNK2028: ёё√ыър эр эхЁрчЁх°хээє■ ыхъёхьє (0A00000C) "public: static int __clrcall Sort::SortMethod::Select(int *,unsigned int)" (?Select@SortMethod@Sort@@$$FSMHPAHI@Z) т ЇєэъЎшш "private: void __clrcall WindowsFormsApplication1::Form1::sort_Click(class System::Object ^,class System::EventArgs ^)" (?sort_Click@Form1@WindowsFormsApplication1@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    2>WindowsFormsApplication1.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "public: static int __clrcall Sort::SortMethod::Select(int *,unsigned int)" (?Select@SortMethod@Sort@@$$FSMHPAHI@Z) т ЇєэъЎшш "private: void __clrcall WindowsFormsApplication1::Form1::sort_Click(class System::Object ^,class System::EventArgs ^)" (?sort_Click@Form1@WindowsFormsApplication1@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
    2


    Приведу сокращенный код файлов проекта, возможно, у меня просто элементарная ошибка, а я не могу ее обнаружить.
    Основной файл:

    #pragma endregion
    		static int* MyArray = new int[50]; //объявляем масив
    		static int i=0;
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    			 MyArray[i] = Convert::ToInt32(number -> Text);
    			 i++;
    
    			 }
    	private: System::Void sort_Click(System::Object^  sender, System::EventArgs^  e) {
    			 Sort::SortMethod::Select(MyArray,i);			 
    		 }


    Файл .h моей библиотеки:

    namespace Sort
    {
        class SortMethod
        {
        public:
    		
            static int Select(int *MyArray, unsigned int number);
    
        };
    }


    Файл .cpp библиотеки:

    namespace Sort
    {
        int SortMethod::Select(int *MyArray, unsigned int number)
        {
    		int tmp;
    		for(int i = 0; i < number; ++i) // i - номер текущего шага
    		{ 
    			int pos = i; 
    			tmp = MyArray[i];
    			for(int j = i + 1; j < number; ++j) // цикл выбора наименьшего элемента
    			{
    				if (MyArray[j] < tmp) 
    			   {
    				   pos = j; 
    				   tmp = MyArray[j]; 
    			   }
    			}
    			MyArray[pos] = MyArray[i]; 
    			MyArray[i] = tmp; // меняем местами наименьший с a[i]
    		}
    		return *MyArray;
        }
    Ответ написан
    Комментировать