Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> undefined reference, C++ 
V
    Опции темы
compiler91
  Дата 21.7.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

Репутация: нет
Всего: нет



Добрый день!
Пытаюсь вот начать постигать великую парадигму программирования - ООП, но увы не все получается :(
имеим главную программу:
Код

//main.cpp
#include "Fibonacci.h"
int main(){
    Fibonacci f;
}

, где Fibonacci унаследован от num_sequence...
Код

//num_sequence.h
#ifndef NUM_SEQUENCE_H_
#define NUM_SEQUENCE_H_

#include <iostream>

class num_sequence
{
public:
    virtual ~num_sequence() {};
    virtual int elem(int pos) const = 0;
    virtual const char* what_am_i() const = 0;
    static int max_elems(){ return _max_elems; }
    virtual std::ostream&print( std::ostream &os = std::cout) const = 0;
protected:
    virtual void gen_elems( int pos ) const = 0;
    bool check_integrity( int pos ) const;
    
    const static int _max_elems = 1024;  
};

#endif /*NUM_SEQUENCE_H_*/

Код

// num_sequence.cpp
#include "num_sequence.h"
#include <iostream>

bool num_sequence::check_integrity( int pos ) const{
    if ( pos <= 0 || pos > _max_elems){
        std::cerr << "Error!\t" << "Bad request\n";
        return false;
    }
    return true;
}


Код

//Fibonacci.h
#ifndef FIBONACCI_H_
#define FIBONACCI_H_

#include "num_sequence.h"
#include <vector>

class Fibonacci : public num_sequence
{
public:
    Fibonacci(int len = 1, int beg_pos = 1)
        :_lenght(len), _beg_pos( beg_pos){}
    
    virtual int elem(int pos) const;
    virtual const char* what_am_i() const { return "Фибоначчи"; };
    virtual std::ostream& print( std::ostream &os = std::cout) const;
    int lenght() const { return _lenght; }
    int beg_pos() const { return _beg_pos; }
protected:
    virtual void gen_elems( int pos ) const;
    int _lenght, _beg_pos;    
    static std::vector<int> _elems;
};
#endif /*FIBONACCI_H_*/

Код

//Fibonacci.cpp
#include "Fibonacci.h"
#include <iostream>

int Fibonacci::elem(int pos) const{
    if (!check_integrity( pos ))
        return 0;
    if ( pos > Fibonacci::_elems.size())
        Fibonacci::gen_elems( pos );
    return _elems[ pos-1 ];
}


std::ostream& Fibonacci::print( std::ostream &os ) const{
    for(int ix = beg_pos(); ix< beg_pos()+lenght(); ++ix)
        os << _elems[ix] << '\t';
    os << '\n';
    return os;
}

void Fibonacci::gen_elems( int pos ) const{
    switch ( _elems.size() ){
        case 0: _elems.push_back(1);
        case 1: _elems.push_back(1);
    }
    for( int ix = 0; ix < pos; ++ix)
        _elems.push_back( _elems[ix-1] + _elems[ix-2] );
}


Но в результате компилирования получаю множество
undefined reference to `Fibonacci::_elems'    в Fibonacci.cpp
Почему?
компилятор: g++
Заранее благодарен.
PM MAIL   Вверх
Fin
Дата 21.7.2008, 21:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



У тебя в классе обозначен статический элемент. Нужно выделить под него место. Просто в Fibonacci.cpp добавь строку 
Код

std::vector<int> Fibonacci::_elems;


Это сообщение отредактировал(а) Fin - 21.7.2008, 21:03


--------------------
Пролетал мимо.
PM MAIL   Вверх
compiler91
Дата 21.7.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

Репутация: нет
Всего: нет



Fin, спасибо!
Видно что-то недочитал в теор части..

Да и еще пару ошибок нашел паралельно...


Это сообщение отредактировал(а) compiler91 - 21.7.2008, 22:30
PM MAIL   Вверх
compiler91
  Дата 23.7.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

Репутация: нет
Всего: нет



удалено..

Это сообщение отредактировал(а) compiler91 - 23.7.2008, 22:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.