Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Deimon
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183

не видит тела функции в .cpp файле. Использую namespace

16.04.2013, 12:25. Показов 826. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил на всякий случай использовать namespace в своей программе, но столкнулся с тем, что не понимаю как описать в одном файле объявления методов, а в другом тела (как в классах). Либо у меня где-то ошибка, которая объявилась только сейчас. Подскажите пожалуйста, как правильно использовать namespace, и можно ли описывать методы в двух разных местах.

Вот что происходит:
есть юнит resource с объявленным namescape MainFunctions и функцией RollValue(..)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//resource.h файл
#ifndef resourceH
#define resourceH
 
#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <list>
 
#define GTB Graphics::TBitmap
HANDLE DataDLL = LoadLibrary("Data.dll");
 
namespace MainFunctions
{
  int Summ(int a, int b) {return a+b; }
  bool RollPercent(short perc0to100);
  int RollValue(int min, int max);
}
 
#endif
в cpp этого юнита находится тело этой функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//resource.cpp файл
#pragma hdrstop
#include "resource.h"
 
bool MainFunctions::RollPercent(short perc) {
  randomize();
  if (perc >rand()%100) return true; else return false;
}
 
int MainFunctions::RollValue(int min, int max) {
  int val= max-min;
  int summ=0;
  while (val>32767)  
  {
    randomize();
    summ= summ + rand()%32767;
    val= val - 32767;
  }
  randomize();
  summ= summ + rand()%val + min;
  return summ;
}
 
#pragma package(smart_init)
Этот юнит подключен в хэдере main юнита.
PHP
1
2
3
4
//main.h
...
#inlude "resource.h"
....
и используется в исполняемом файле, где и возникает ошибка
C++
1
2
//main.cpp
int val = MainFunctions::RollValue(-1000000,10000000);
выхлоп компилятора выдает ошибку [ILINK32 Error] Error: Unresolved external 'MainFunctions::RollValue(int, int)' referenced from "путь к мэйн юниту.OBJ"

Что я делаю не так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2013, 12:25
Ответы с готовыми решениями:

Вызов переменных из функции в файле .cpp
Здрасти. Никак не могу понять как это сделать.. Есть файл show.h, в котором объявлены некие функции в неком классе #pragma...

Как вызвать в основном .cpp файле тот или иной .cpp файл
Ну, обычно я работал с одним .cpp но вот появилась надобность в основном файле написать интерфейс простенький и выбор одного из 2х...

Описание функции шаблонного класса библиотеки в отдельном cpp-файле
Есть библиотека. В файле ARRAYLIST.HPP описан шаблон template &lt;typename _Type&gt; class ArrayList { private: int length; ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2013, 12:25
Помогаю со студенческими работами здесь

определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
Сабж, а подробнее если в заголовочном файле hider.h описана функция, допустим так: void f (); void f () { int per= 10; } ...

С помощью командной строки >namberstr f1.cpp Определить число строк в файле с именем f1.cpp
С помощью командной строки &gt;namberstr f1.cpp Определить число строк в файле с именем f1.cpp

Не видит namespace List
в статье http://www.cyberguru.ru/dotnet/wpf-silverlight/datagrid-wcf-adonet.html в строчке про List&lt;Employee&gt; подчеркивает и говорит...

Using namespace не видит пользовательский класс
Добрый день. Я добавил в свой solution еще один проект. Назовем этот проект Configuration. Сообветственно namespace и основной класс...

Почему xaml не видит namespace?
Имеется C# Для Windows Phone, VS2013 XAML &lt;Application x:Class=&quot;PivotApp3.App&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru