Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

01.07.2012, 17:59. Просмотров 681. Ответов 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()'

Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 17:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подскажите, что не так? (C++):

Подскажите что не так ? - 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++
Нужно заменить цифры в числе на ноль, если цифра равна &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++
Вот задача: Написать программу, по длинам сторон распознающую среди всех треугольников АВС прямоугольные. Если таковых нету, то вычислить...

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

RasEnumConnections Подскажите, что не так!!! - C++
#include &lt;windows.h&gt; #include &lt;Ras.h&gt; int main() { DWORD dwRas; RASCONN MY_RASCONN; DWORD MY_DWORD1=sizeof(MY_RASCONN); ...

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

нет, не компилируется, г++ выдает ошибку (выше) о неправильном обращении. Объектный файл? Вы о Bow.h?
0
sandye51
программист С++
687 / 592 / 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;
}
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 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 ...
0
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

Спасибо за ответы
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 19:05 #9
Дело не в пространстве имен. Опиши процесс компиляции, на 99% уверен что ты не компилируешь Bow.cpp, а если и компилируешь то не линкуешь его.
0
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 включается автоматом, если они в одной папке
0
castaway
Эксперт С++
4926 / 3033 / 372
Регистрация: 10.11.2010
Сообщений: 11,084
Записей в блоге: 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-шник.
1
Asalle
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 6
01.07.2012, 22:22  [ТС] #12
Цитата Сообщение от lazybiz Посмотреть сообщение
Тебе следует сделать так:Флаг '-c' говорит компилятору о том, что файл необходимо только скомпилировать, но не собирать exe-шник.
У МЕНЯ ЛИНУКС, БЛИН
может, вы имеете ввиду исполняемый файл с chmod rwxr-xr--? Раньше все компилировалось отлично, программы запускались в консоли на ура ... Только с классами вот .. да и раскидано по файлам, попробую еще раз слиться в один и без namespace std

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

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

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

Наследование, подскажите что не так - C++
Решил разобраться с наследованием, настрочил простенький такой код .. работать не хочет Подскажите что не так #include &quot;stdafx.h&quot;...

Подскажите пожалуйста, что не так - C++
Задание из книги. Вроде бы все делаю правильно, но в итоге программа не правильно считает. На скрине условие и сама формула, по которой...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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