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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
#1

Завернутые векторы - C++

13.12.2010, 17:47. Просмотров 626. Ответов 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;
};
читал что ошибка возникает, если не описать обьявленую функцию, хотя я вроде все описал
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 17:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Завернутые векторы (C++):

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

Векторы - C++
Здравствуйте. Использую векторы типа vector&lt;string&gt; sentence;. Описываю их в классе в private объявляю vector&lt;string&gt; sentence;/ В public...

Векторы - C++
Доброго времени суток! Очень нужна помощь в двух задачах. Заранее спасибо! 1. Дан целочисленный вектор С(6). Найти сумму тех его...

Векторы!!! - C++
Как найти произведение двух векторов и записать это в рабочем варианте допустим у меня 1 вектор(5,6,7) и второй (7,8,9) мне что нужно...

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

Векторы - C++
Изучаю сейчас библиотеку vector. #include &lt;vector&gt; int main() { std::vector&lt;int&gt; v(2); // Создаем вектор, состоящий из двух...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.12.2010, 18:32 #2
Mee, static unsigned int sz;
Статический член - является прямым членом класса. А не членом объекта класса. Нужно инициализировать вне класса или использовать не статический член
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 19:34  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Mee, static unsigned int sz;
Статический член - является прямым членом класса. А не членом объекта класса. Нужно инициализировать вне класса или использовать не статический член
как именно это сделать?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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);
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 20:02  [ТС] #5
сделал все как вы сказали, теперь выбивает програму с ошибкой Debug Error.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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));
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];, выбивает ошибку
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.12.2010, 20:24 #8
Mee, После resize-а c или вы еще не пробовали с resize-ом?
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;
};
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.12.2010, 20:37 #10
Mee, Это конечно прекрасно)
И вы хотите сказать что при этом размер вектора в структуре так же равен 3?
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);
    };
так что думал что да
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.12.2010, 21:26 #12
Mee, Если так то да. Но вектор c то получается нулевого размера. Разве нет?
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 21:35  [ТС] #13
Выходит что да. И как с этим боротся?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.12.2010, 21:53 #14
Mee, Поставить ра3мер вектора в функции
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 22:31  [ТС] #15
а делаем мы это с помощью c.vect.resize(w_v::sz);?

огромное спасибо за потраченное время
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 22:31
Привет! Вот еще темы с ответами:

векторы С++ - C++
С текстового файла считать действительные числа в вектор. С вектора удалить все нечетные положительные числа. Образованные элементы...

Векторы - C++
Добрый день, помогите пожалуйста решить задачку, в моей программе могут быть ошибки, т.к. в материале я полный 0. /*IV. Ðåàëèçîâàòü â...

Векторы в с++ - C++
Привет мостера помогите решить задания. Реализовать структуру данных вектор, содержащий следующие методы: добавить...

Векторы - C++
Даны векторы x и y размерности n, и квадратные матрицы А и В размерности n*n. Вычислить (Ах, Ву). Алгоритмы умножения матрицы на вектор и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.12.2010, 22:31
Ответ Создать тему
Опции темы

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