Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Deimon
 Аватар для Deimon
34 / 34 / 2
Регистрация: 29.08.2009
Сообщений: 178
16.04.2013, 12:25     не видит тела функции в .cpp файле. Использую namespace #1
Решил на всякий случай использовать 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"

Что я делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 12:25     не видит тела функции в .cpp файле. Использую namespace
Посмотрите здесь:

C++ определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
как сделать объект класса доступным в каждом модуле (cpp файле) ? C++
Не видит cpp файл... C++
С помощью командной строки >namberstr f1.cpp Определить число строк в файле с именем f1.cpp C++
Объявление внешней функции в namespace C++
Шаблонные методы шаблонного класса в cpp-файле C++
C++ Шаблонная функция: в файле .h или .cpp
Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++

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

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

Текущее время: 07:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru