Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка при линковке


Автор: DarkASU 28.2.2010, 00:02
Код


#include <iostream>

class Strings 
{
      public: 
              
              Strings(); 
              Strings (const char*); 
              String (const String&); 
              ~Strings();
                     
                      Strings& operator= ( const Strings&);
                      Strings& operator= ( const char*);              
                      
                      Strings& operator== ( const Strings&);
                      Strings& operator== ( const char*); 
                       
                      char& operator [] (int);
                      
                      int size () {return _size;}
                      char* c_str () {return _strings;}
      private:
              int _size;
              char *_strings;
};




int main ()

{
   
    Strings str;
   
}


Выдает ошибку 
  [Linker error] undefined reference to `Strings::Strings()' 
  [Linker error] undefined reference to `Strings::~Strings()' 
В чем может быть проблема код вроде  правильный.

Автор: baldina 28.2.2010, 02:50
а где определение (код) класса Strings? При создании переменной str вызывается конструктор, при выходе из области видимости - деструктор, но они не определены.

Добавлено через 3 минуты и 35 секунд
Цитата

код вроде  правильный

угу. но не полный - надо определить конструктор, деструктор, операторы. всё, что объявлено.
кстати - Strings& operator= ( const char*); и Strings& operator== ( const char*); имхо излишни, без них будет работать (посредством неявного преобразования char* в String)

Добавлено через 4 минуты и 9 секунд
Код

Strings& operator== ( const Strings&);

странный оператор. вероятно, он должен возвращать bool

Автор: DarkASU 28.2.2010, 10:03
Код

Strings& operator== ( const Strings&);

Да. Это операция сравнения двух строк чтобы можно было делать
Str1 == Str2

Автор: baldina 28.2.2010, 17:44
что - "да"? результат сравнения a == b обычно имеет булев тип (true/false), а не тип аргументов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)