Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
1

Завернутые векторы

13.12.2010, 17:47. Просмотров 683. Ответов 15
Метки нет (Все метки)

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

Linking...
main.obj : error LNK2001: unresolved external symbol "public: static unsigned int w_v::sz" (?sz@w_v@@2IA)
realization.obj : error LNK2001: unresolved external symbol "public: static unsigned int w_v::sz" (?sz@w_v@@2IA)
C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\kr09\Debug\kr09.exe : fatal error LNK1120: 1 unresolved externals


header.h
C++
1
2
3
4
5
6
7
#include <vector>
struct w_v
{
    static unsigned int sz;
    std::vector <double> vect;
};
w_v operator+(w_v a, w_v b);

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include "header.h"
using namespace std;
 
int main()
{   
    w_v a;
    w_v b;
    a.sz=10;
 
    a.vect.assign(10,1);
    b.vect.assign(10,2);
    w_v c=a+b;
    return 0;
};


realization.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "header.h"
#include <vector>
w_v operator+(w_v a, w_v b)
{
    w_v c;
    c.sz=b.sz;
    for (int i=0; i<a.vect.size(); i++)
        c.vect.at(i)=a.vect.at(i)+b.vect.at(i);
    return c;
};
читал что ошибка возникает, если не описать обьявленую функцию, хотя я вроде все описал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 17:47
Ответы с готовыми решениями:

Векторы
Определите полусумму длин двух векторов А(1,5; 2,5; -0,3) и В(-11,7; -9,3; 2,5;...

векторы С++
С текстового файла считать действительные числа в вектор. С вектора удалить все...

Векторы
Здравствуйте. Использую векторы типа vector&lt;string&gt; sentence;. Описываю их в...

Векторы!!!
Как найти произведение двух векторов и записать это в рабочем варианте ...

Векторы!
Введите вектор и найдите его норму: сумму абсолютных величин координат. Что...

15
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 18:32 2
Mee, static unsigned int sz;
Статический член - является прямым членом класса. А не членом объекта класса. Нужно инициализировать вне класса или использовать не статический член
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 19:34  [ТС] 3
Цитата Сообщение от ForEveR Посмотреть сообщение
Mee, static unsigned int sz;
Статический член - является прямым членом класса. А не членом объекта класса. Нужно инициализировать вне класса или использовать не статический член
как именно это сделать?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 19:49 4
Mee,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "header.h"
#include <vector>
 
w_v::sz=10;
 
w_v operator+(w_v a, w_v b)
{
        w_v c;
        c.sz=b.sz;
        for (int i=0; i<a.vect.size(); i++)
                c.vect.at(i)=a.vect.at(i)+b.vect.at(i);
        return c;
};
И из мейна убрать соответственно
C++
1
  a.sz=10;
И это бессмысленно
C++
1
        c.sz=b.sz;
Ибо этот член пренадлежит непосредственно классу. Он ОДИН на всю программу. Каждый класс который создается - создается со значением sz=10 (в данном случае).

А впринципе можно сделать и так.

C++
1
2
3
4
5
6
7
#include <vector>
struct w_v
{
        static const unsigned sz=10;
        std::vector <double> vect;
};
w_v operator+(w_v a, w_v b);
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 20:02  [ТС] 5
сделал все как вы сказали, теперь выбивает програму с ошибкой Debug Error.
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 20:02 6
Mee, Пройдитесь пошагово.
Хотя я кажется итак знаю где у вас ошибка.
C++
1
        w_v c;
Напишите после этого.
C++
1
c.vect.resize(a.vect.size());
если у вас размеры векторов равны (я так понимаю что равны).
Или вместо.
C++
1
c.vect.at(i)=a.vect.at(i)+b.vect.at(i);
Напишите.
C++
1
c.vect.push_back(a.vect.at(i)+b.vect.at(i));
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 20:21  [ТС] 7
почему-то при i=1 не выполняется действие c.vect[i]=a.vect[i]+b.vect[i];, выбивает ошибку
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 20:24 8
Mee, После resize-а c или вы еще не пробовали с resize-ом?
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 20:33  [ТС] 9
у меня размер константой
C++
1
2
3
4
5
struct w_v
{
        static const unsigned sz=3;
        std::vector <double> vect;
};
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 20:37 10
Mee, Это конечно прекрасно)
И вы хотите сказать что при этом размер вектора в структуре так же равен 3?
0
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 21:24  [ТС] 11
создаю я векторы вот так
C++
1
2
3
4
5
    for (int i=0;i<w_v::sz;++i)
    {
        a.vect.push_back(i);
        b.vect.push_back(i);
    };
так что думал что да
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 21:26 12
Mee, Если так то да. Но вектор c то получается нулевого размера. Разве нет?
1
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 21:35  [ТС] 13
Выходит что да. И как с этим боротся?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 21:53 14
Mee, Поставить ра3мер вектора в функции
1
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 22:31  [ТС] 15
а делаем мы это с помощью c.vect.resize(w_v::sz);?

огромное спасибо за потраченное время
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
13.12.2010, 23:25 16
Mee, Именно с помощью resize да
0
13.12.2010, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 23:25

Векторы
Имеется структура &quot;Магазины&quot;, где в качестве полей есть: Название, Город,...

Векторы
Изучаю сейчас библиотеку vector. #include &lt;vector&gt; int main() { ...

Векторы
Доброго времени суток! Очень нужна помощь в двух задачах. Заранее спасибо! ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru