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

Пространства имен - C++

Восстановить пароль Регистрация
 
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
20.05.2013, 12:39     Пространства имен #1
Здравствуйте. В общем в этом примере возникает ошибка при компиляции
C++
1
2
1>123.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl SALES::setSales(struct SALES::Sales &,double const * const,int)" (?setSales@SALES@@YAXAAUSales@1@QBNH@Z) в функции _main
1>C:\Users\Андрей\Documents\Visual Studio 2010\Projects\123\Debug\123.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
К сожалению нету указателя на конкретную строку, поэтому не понимаю в чем затуп. Помогите пожалуйста.

Заголовочный файл с неймспейсом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace SALES
{
const int QUARTERS = 4;  //размер массивов
struct Sales    //создание типа Sales
{
    double sales[QUARTERS];
    double average;
    double max;
    double min;
};
 
void setSales(Sales & s, const double ar[], int n);
 
//void setSales(Sales & s);
 
//void showSales(const Sales & s);
}
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
25
26
27
28
29
30
31
32
#include "my_include.h"
#include <iostream>
using namespace SALES;
using namespace std;
 
void setSales(Sales & s, const double ar[], int n)
{
    s.max = ar[0];  //стартовые значения максимального и минимального значения
    s.min = ar[0];
 
    for(int i=0; i<n; i++)
    {
        s.sales[i] = ar[i];       //переносим значение из массива ar в массив-элемент
        if(s.sales[i] > s.max)    //структуры, а также ищем и задаем максимальное
        {                         //и минимальное значение
            s.max = s.sales[i];
        };
 
        if(s.sales[i] < s.min)
        {
            s.min = s.sales[i];
        };
 
        s.average += s.sales[i];  //вычиесляем
    }                             //среднее арефметическое
    s.average /= n;               //всех чисел и записываем
    cout << "max: " << s.max << endl << ", min: " << s.min; //тестовое отображение
};
 
//void setSales(Sales & s);
 
//void showSales(const Sales & s);
Cpp файл, в котором используется все предыдущее
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
#include <string>
#include "my_include.h"
using namespace std;
using namespace SALES;
int main(void)
{
    const double digits[QUARTERS] = {45, 24, 242, 23}; //тестовый массив
    Sales hhh;   //тестовая структура
    setSales(hhh, digits, QUARTERS);
    system("pause");
    return 0;
};
Добавлено через 17 минут
Как всегда, час подумаю, напишу на форум и через 5 минут нахожу ошибку. Уже не актуально.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 12:39     Пространства имен
Посмотрите здесь:

Пространства имен в Эклипс C++
C++ Использование пространства имен
C++ использование пространства имен
C++ Столкнулся с ошибкой пространства имен
область видимости, пространства имен C++
Отличия пространства имен от структуры C++
Создание пространства имен C++
C++ Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные?

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

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

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