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

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

Восстановить пароль Регистрация
 
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
13.12.2010, 17:47     Завернутые векторы #1
Нужно написать програму, которая складывает два завернутых вектора фиксированной длинны. Вообщем прграма из трех файлов, выдает ошибку

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

Векторы! C++
Векторы C++
Векторы в с++ C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.12.2010, 23:25     Завернутые векторы #16
Mee, Именно с помощью resize да
Yandex
Объявления
13.12.2010, 23:25     Завернутые векторы
Ответ Создать тему
Опции темы

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