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

Ошибка в коде - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ std::cin & switch case http://www.cyberforum.ru/cpp-beginners/thread607855.html
Всем привет. Вообщем проблема такая: while(val) { int choice; std::cin >> choice; switch(choice) { case 1: break;
C++ «Комплексные числа» Программа, которая позволяет выбрать одну или несколько точек на плоскости с помощью мыши. Для каждой точки прорисовывается конформное отображение КЧ и на экран выводится комплексное число в алгебраической форме. В случае если заданы две точки, пользователю предлагается выполнить сложение и/или вычитание. Класс дополнить методами, выполняющими базовые операции над КЧ: сложение, вычитание.... http://www.cyberforum.ru/cpp-beginners/thread607847.html
Pacman консольный C++
Переписывал прогу пакмена из этого поста http://www.cyberforum.ru/csharp-beginners/thread430592.html, ради самообучения. В визуал студио все хорошо работает а в нетбианс под линуксом ввожу pipez а на выходе pipe>0pip=0pi>0p=0>0 (это если без слип) а если с ним так вообще все пропадает пару раз ентер нажмеш и она вылезет. думаю в очистке экрана что-то не так. подскажите // 123.cpp : Defines the...
C++ Чтение файла (найти количество пассажиров и вес багажа)
Здраствуйте, решал задачу тут. Не могли бы вы помочь с одним моментом: при чтении файла (текстового), нужно найти количество пассажиров вес багажа которых превышает 30 кг. С чтением разобрался а вот с остальным нет. printf("Vvedite nazvanie faila: "); scanf("%s", file_name); ifstream in(file_name); char c; while (!in.eof() && in.get(c)) cout << c;
C++ List и Set http://www.cyberforum.ru/cpp-beginners/thread607797.html
В общем у нас есть отрезок от 1 до X. Отсортировать этот отрезок, вида: (1,х,2,х-1,...). Заполнить этой последовательностью list и set. И найти в listе и sete элементы делящиеся на 100 или 100-тые элементы( сам задание не понял если честно). Ну и замерить время поиска этих элементов и сравнить естественно. Теперь вопросы: Как заполнить list? пробовал что-то типо этого: list.insert(n), ругается....
C++ Составить описание класса одномерных массивов строк Составить описание класса одномерных массивов строк,каждая строка которых задается длиной и указателем на выделенную для нее память. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы индексов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов,... подробнее

Показать сообщение отдельно
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465

Ошибка в коде - C++

17.06.2012, 19:27. Просмотров 480. Ответов 1
Метки (Все метки)

Долго сижу и никак не могу понять в чём ошибка. Вот 3 файла. Они подключены правильно и работают.
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "string2.h"
 
using namespace std;
 
int main()
{
    String s1("pozdravlyaem"), s2(" s dnem rozdenia"), s3("");
 
    return 0;
}
string2.h
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
#ifndef STRING2_H
#define STRING2_H
 
#include <iostream>
 
using namespace std;
 
class String {
        friend ostream operator<< (ostream &, const String &);
        friend istream operator>> (istream &, String &);
    public:
        String(const char * = "");
        String(const String &);
        ~String();
        const String &operator=(const String &);
        String &operator+=(const String &); // сцепление или конкатенация
        int operator!() const;
        int operator== (const String &) const;
        int operator!= (const String &) const;
        int operator< (const String &) const;
        int operator> (const String &) const;
        int operator<= (const String &) const;
        int operator>= (const String &) const;
        char &operator[](int);
        String operator()(int, int);
        int getLenght() const;
 
    private:
        char *sPtr;
        int lenght;
 
};
 
#endif // STRING2_H
string2.cpp
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <iomanip>
#include <string.h>
#include <assert.h>
#include <windows.h>
#include <math.h>
#include "string2.h"
 
using namespace std;
 
char bufRus[256];
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
 
String::String(const char *s)
{
    cout << Rus("Конструктор преобразования: ") << s << endl;
    lenght = strlen(s);
    sPtr = new char[lenght + 1];
    assert(sPtr != 0);
    strcpy(sPtr, s);
}
 
String::~String()
{
    cout << Rus("Деструктор: ") << sPtr << endl;
    delete [] sPtr;
}
 
const String &String::operator=(const String &right)
{
    cout << Rus("Вызов operator=") << endl;
 
    if (&right != this) {
        delete [] sPtr;
        lenght = right.lenght;
        sPtr = new char[lenght + 1];
        assert(sPtr != 0);
        strcpy(sPtr, right.sPtr);
    }
    else { cout << Rus("Попытка самоприсваивания String.") << endl; }
 
    return *this;
}
 
String &String::operator+=(const String &right)
{
    char *tempPtr = sPtr;
    lenght += right.lenght;
    sPtr = new char[lenght + 1];
    assert(sPtr != 0);
    strcpy(sPtr, tempPtr);
    strcat(sPtr, right.sPtr);
    delete [] tempPtr;
 
    return *this;
}
 
int String::operator!() const { return lenght == 0;}
 
int String::operator== (const String &right) const
{
    return strcmp(sPtr, right.sPtr) == 0;
}
 
int String::operator!=(const String &right) const
{
    return strcmp(sPtr, right.sPtr) != 0;
}
 
int String::operator< (const String &right) const
{
    return strcmp(sPtr, right.sPtr) < 0;
}
 
int String::operator> (const String &right) const
{
    return strcmp(sPtr, right.sPtr) > 0;
}
 
int String::operator<= (const String &right) const
{
    return strcmp(sPtr, right.sPtr) <= 0;
}
 
int String::operator>= (const String &right) const
{
    return strcmp(sPtr, right.sPtr) >= 0;
}
 
char &String::operator[] (int subscript)
{
    assert(subscript >= 0 && subscript < lenght);
    return sPtr[subscript];
}
 
String String::operator() (int index, int subLenght)
{
    assert(index >= 0 && index < lenght && subLenght >= 0);
    String sub;
 
    if ((subLenght == 0) || (index + subLenght > lenght))
        sub.lenght = lenght - index + 1;
    else
        sub.lenght = subLenght + 1;
 
    delete sub.sPtr;
    sub.sPtr = new char [sub.lenght];
    assert(sub.sPtr != 0);
 
    strncpy(sub.sPtr, &sPtr[index], sub.lenght);
    sub.sPtr[sub.lenght] = '\0';
 
    return sub;
}
 
int String::getLenght() const { return lenght; }
 
ostream &operator<< (ostream &output, const String &s)
{
    output << s.sPtr;
    return output;
}
 
istream &operator>> (istream &input, String &s)
{
    char temp[100];
    input >> setw(100) >> temp;
    s = temp;
    return input;
}
А ошибки собсвенно такие:
C++
1
2
3
4
5
6
7
8
9
 C++\well\string2.cpp||In function 'std::ostream& operator<<(std::ostream&, const String&)':|
 C++\well\string2.cpp|121|error: new declaration 'std::ostream& operator<<(std::ostream&, const String&)'|
 C++\well\string2.h|9|error: ambiguates old declaration 'std::ostream operator<<(std::ostream&, const String&)'|
 C++\well\string2.h|29|error: 'char* String::sPtr' is private|
 C++\well\string2.cpp|123|error: within this context|
 C++\well\string2.cpp||In function 'std::istream& operator>>(std::istream&, String&)':|
 C++\well\string2.cpp|127|error: new declaration 'std::istream& operator>>(std::istream&, String&)'|
 C++\well\string2.h|10|error: ambiguates old declaration 'std::istream operator>>(std::istream&, String&)'|
||=== Build finished: 6 errors, 0 warnings ===|
Никак не могу разобраться!!! Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru