Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 19:21   #1
Ayerice
Новичок
Джуниор
 
Аватар для Ayerice
 
Регистрация: 10.05.2014
Сообщений: 1
По умолчанию Не работает форма, идентификатор не найден (с++, MSVS Express 2013)

Что нужно сделать: создать форму C++ (именно так, не с#), которая бы считывала вводимое в одно поле число, по нажатию на button записывала бы в другое поле вычисленный факториал этого числа (пример отсюда: http://code-live.ru/post/first-windows-form/ )
Задача, казалось бы, простая, но возникло несколько трудностей.
Что я делаю:
1) Создаю пустой с++ CLR-проект fuckt, далее добавляю в него новый элемент - Visual с++ -> UI -> Windows Form (назвал MyForm)
2) Добавляю нужные элементы в форму: два NumericUpDownBox'a, в первый надо будет ввести число, во второй должен записаться ответ (назвал num1 и num2 соответственно); также создал кнопку (назвал b1).
3) В заголовочные файлы добавил fact.h, в исходники - fact.cpp. Итого в проекте два заголовка (MyForm.h & fact.h) и два .cpp-файла с теми же именами.
4) Заполняю файлы кодом
Код:
//fact.h
 
long int fact(int N);
Код:
//fact.cpp
 
#include "fact.h"
#pragma once
 
 
long int fact(int N)
{
    if (N < 0)
        return 0;
    if (N == 0)
        return 1;
    else
        return N * fact(N - 1);
}
В fact.cpp на сайте с инструкцией также было включено #include "stdafx.h" и не было #include "fact.h". На первое MSVS Express 13 ругается "не удалось открыть источник файл", второе мне показалось странным и я решил проявить инициативу.

Код:
//MyForm.cpp

#include "fact.h"
#include "MyForm.h"
Про заполнение этого файла вообще ничего не было сказано, кроме как добавить fact.h

Далее добавляю обработку нажатия кнопки:
Код:
// из MyForm.h
    private: System::Void b1_Click(System::Object^  sender, System::EventArgs^  e)
    {
                 int number = System::Convert::ToInt32(num1->Text);
                 long int factor = fact(number);
                 num2->Text = System::Convert::ToString(factor); 
    }
Пытаюсь так скомпиллировать, выдает ошибку:
"Ошибка 1 error C3861: fact: идентификатор не найден c:\users\ayerice\documents\visual studio 2013\projects\fuckt\fuckt\MyForm.h"
в строчке
Код:
// из MyForm.h
long int factor = fact(number);
Хотя при наведении мышью на fact(number) всплывает "long fuct(int N)".
То есть, насколько я понял, объявление в fact.h компилятор видит, а определение в fact.cpp - нет, другими словами - моя проблема в организации работы cpp-файлов.
Где я глобально не понимаю и как заставить форму заработать?

Последний раз редактировалось Ayerice; 10.05.2014 в 20:07.
Ayerice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка MSVS 2013 Dima-War Visual C++ 0 19.12.2013 12:56
Windows Forms in MSVS C++ Express 2010 stpdqstns Windows Forms 3 14.02.2013 10:19
error pow: идентификатор не найден Faton 11 Общие вопросы C/C++ 2 27.11.2012 22:17
Ошибка-идентификатор не найден Саша019960 Помощь студентам 1 01.12.2011 00:26
Ошибка-идентификатор не найден Саша019960 Помощь студентам 1 30.11.2011 18:30