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

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

Войти
Регистрация
Восстановить пароль
 
 
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
#1

Подскажите, что не так? - C++

01.07.2012, 17:59. Просмотров 656. Ответов 15
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//bow.h
 
using namespace std;
 
class Bow 
    {
      string color;
      bool drawn;
      int arrows;
      
      public: 
      Bow(string icolor);
      ~Bow();
      void draw();
      int fire();
      
    };
 
 
//bow.cpp
 
 
using namespace std;
       
  void  Bow::Bow(string icolor)
    {
      numOfArrows=10;
      drawn=false;
      color= icolor;
    }
 void  Bow::~Bow()
    {
      
    }
    
    
    
    void Bow::draw()
    {
      drawn = true;
      cout << color<<" Is drawn";
    }
    int Bow::fire()
    {
      if (!drawn)
        {
          cout << color << "Is not drawn";
          return 0;
        }
      cout << "Fire!!";
     
       return 0;
    }
    
 
//main.cpp
#include <iostream>
#include <string>
#include "Bow.h"
using namespace std;
 
 
int main(void)
{
  Bow red("Red");
  Bow blue("Blue");
  red.fire();
  blue.draw();
  blue.fire();
}
Изучаю ООП, это моя первая пр. с классами, но я не могу понять, почему g++ выдает это:
Код
ndefined reference to `Bow::Bow(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
s.cpp:(.text+0xca): undefined reference to `Bow::Bow(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
s.cpp:(.text+0xe2): undefined reference to `Bow::fire()'
s.cpp:(.text+0xee): undefined reference to `Bow::draw()'
s.cpp:(.text+0xfa): undefined reference to `Bow::fire()'
s.cpp:(.text+0x106): undefined reference to `Bow::~Bow()'
s.cpp:(.text+0x112): undefined reference to `Bow::~Bow()'
s.cpp:(.text+0x18d): undefined reference to `Bow::~Bow()'
s.cpp:(.text+0x19d): undefined reference to `Bow::~Bow()'

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 17:59     Подскажите, что не так?
Посмотрите здесь:

Подскажите что не так? - C++
Нужно заменить цифры в числе на ноль, если цифра равна &quot;a&quot;. А затем вывести получившееся число. число N - натуральное, а - является...

Подскажите что не так? - C++
Класс #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; #include &quot;dot.h&quot; Dot::Dot() { x=0; y=0; ...

Подскажите что не так ? - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;math.h&gt; using namespace std; int main() { double x,y,n; ...

Подскажите что я не так делаю - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; ...

подскажите пожалуйста, что не так? - C++
Здравствуйте. У меня вопрос по поводу задачи: найти букву, чаще встречающуюся в тексте. Т.е. я ввожу массив из элементов,...

Подскажите что с рекурсией не так - C++
помогите пожалуйста дописать программу условие вычислить используя рекурсию sqrt(8-sqrt(8+sqrt(8-sqrt(8-sqrt(8+ ... знаки перед...

Подскажите пожалуйста что не так - C++
Вот выражение: e2/3+e3/4+e4/5+...+e9/10 Вроде компилится, консоль запускается, но выражение не высчитывает. Вот код: #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
01.07.2012, 18:01     Подскажите, что не так? #2
Asalle, конструкторы и деструктор ничего не должны возвращать
MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
01.07.2012, 18:17     Подскажите, что не так? #3
в Bow.cpp
C++
1
#include "Bow.h"
сделай
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 18:22     Подскажите, что не так? #4
Тут дело не в конструкторах. Скорее всего ты не компонуешь Bow.obj / Bow.o на стадии линковки. Он, кстати, у тебя вообще компилируется? Объектный файл Bow есть?
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
01.07.2012, 18:28  [ТС]     Подскажите, что не так? #5
убрала void перед констр и дестр, включила Bow.h в Bow.cpp, но ничего не изменилось

нет, не компилируется, г++ выдает ошибку (выше) о неправильном обращении. Объектный файл? Вы о Bow.h?
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
01.07.2012, 18:32     Подскажите, что не так? #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <string>
#include <iostream>
 
class Bow 
{
    std::string color;
    bool drawn;
    int arrows;
    
public: 
    explicit Bow(const std::string& icolor);
    ~Bow();
    
    void draw();
    int fire();
};
 
Bow::Bow(const std::string& icolor)
{
    drawn = false;
    color= icolor;
}
 
Bow::~Bow()
{
}
 
void Bow::draw()
{
    drawn = true;
    std::cout << color<<" Is drawn" << std::endl;
}
 
int Bow::fire()
{
    if (!drawn)
    {
        std::cout << color << "Is not drawn" << std::endl;
        return 0;
    }
    std::cout << "Fire!!" << std::endl;
    
    return 0;
}
 
int main(void)
{
    Bow red("Red");
    Bow blue("Blue");
    red.fire();
    blue.draw();
    blue.fire();
    
    return 0;
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 18:43     Подскажите, что не так? #7
Цитата Сообщение от Asalle Посмотреть сообщение
нет, не компилируется
Так а какого результата ты ожидаешь?
Ошибки, которые ты показала, появляются при компиляции main.cpp или bow.cpp ?
Каким образом осуществляется процесс компиляции?

Добавлено через 6 минут
C
1
s.cpp:(.text+0xe2): undefined reference to `Bow::fire()'
Судя по первым символам эти ошибки возникают не при компиляции Bow.cpp ...
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
01.07.2012, 19:02  [ТС]     Подскажите, что не так? #8
я компилирую main.cpp, он же s.cpp, но компиляция не происходит. main.cpp - это основной файл программы, bow.h - объявление класса Bow, bow.cpp - это инициализация полей данных и методов.
приношу извинения, я должна была Разъяснить это раньше

о проблемах с using namespace std наслышана, сейчас опробую std::string

Спасибо за ответы
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:05     Подскажите, что не так? #9
Дело не в пространстве имен. Опиши процесс компиляции, на 99% уверен что ты не компилируешь Bow.cpp, а если и компилируешь то не линкуешь его.
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
01.07.2012, 19:15  [ТС]     Подскажите, что не так? #10
g++ -Wall -W -Werror s.cpp -o SCPP

далее вылазят ошибки, сейчас на теле, включить сюда их не могу

хм, на всякий случай : Kubuntu 11.04, IDE== Kate, compiler==g++

дело в том, что я думала, когда. включаешь Bow.h, Bow.cpp включается автоматом, если они в одной папке
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:20     Подскажите, что не так? #11
Тебе следует сделать так:
g++ -с -Wall -W -Werror Bow.cpp -o Bow.o
g++ -с -Wall -W -Werror main.cpp -o main.o
g++ -o main.exe Bow.o main.o
Флаг '-c' говорит компилятору о том, что файл необходимо только скомпилировать, но не собирать exe-шник.
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
01.07.2012, 22:22  [ТС]     Подскажите, что не так? #12
Цитата Сообщение от lazybiz Посмотреть сообщение
Тебе следует сделать так:Флаг '-c' говорит компилятору о том, что файл необходимо только скомпилировать, но не собирать exe-шник.
У МЕНЯ ЛИНУКС, БЛИН
может, вы имеете ввиду исполняемый файл с chmod rwxr-xr--? Раньше все компилировалось отлично, программы запускались в консоли на ура ... Только с классами вот .. да и раскидано по файлам, попробую еще раз слиться в один и без namespace std

Всем огромное спасибо за ответы
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 23:42     Подскажите, что не так? #13
Цитата Сообщение от Asalle Посмотреть сообщение
У МЕНЯ ЛИНУКС
А какая разница, этот флаг актуален вне зависимости от хоста.

Добавлено через 6 минут
Цитата Сообщение от Asalle Посмотреть сообщение
может, вы имеете ввиду исполняемый файл с chmod rwxr-xr--?
простите, что???
diverlin
1 / 1 / 0
Регистрация: 27.04.2011
Сообщений: 7
02.07.2012, 00:18     Подскажите, что не так? #14
Цитата Сообщение от Asalle Посмотреть сообщение
да и раскидано по файлам, попробую еще раз слиться в один
проблема в неправильной сборке программы вызванной с разбиением программы на несколько файлов. не нужно собирать весь код в один файл, это шаг назад. лучше попробуйте как вам посоветовали с тремя командами g++. вместо main.exe можете написать просто main, от этого ничего не изменится, это будет бинарный линукс файл, расширение файла здесь не играет роли. если вам лень набивать эти три команды всё время, вы можете запихать их в bash скрипт и, я полагаю, запускать его из Kate.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 06:44     Подскажите, что не так?
Еще ссылки по теме:

подскажите что не так делаю? - C++
кароче пишу модуль простейший //module #include&lt;stdio.h&gt; #include&lt;conio.h&gt; int i; int function(int a) {

подскажите что не так с программой - C++
Скажите пожалуйста, почему программа не работает. Написала же вроде все как нужно и ошибок также нет. Очень нужно, срочно....

Подскажите что не так с кодом? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; int main() { int matrix; int A={0,1,2,3,4}; int n=5; for(int j=0; j&lt;n;...

Подскажите, что не так в коде - C++
void sortofalpfavit(WORKER* st, int n) { int i,j; for (i = 0; i &lt; n; i++) { for ( j = i + 1; j &lt; n; j++) //...

Подскажите, что я делаю не так - C++
Вот задача: Написать программу, по длинам сторон распознающую среди всех треугольников АВС прямоугольные. Если таковых нету, то вычислить...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.07.2012, 06:44     Подскажите, что не так? #15
Цитата Сообщение от diverlin Посмотреть сообщение
вы можете запихать их в bash скрипт
Makefile, нэ?
Yandex
Объявления
02.07.2012, 06:44     Подскажите, что не так?
Ответ Создать тему
Опции темы

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