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

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

Войти
Регистрация
Восстановить пароль
 
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
#1

Ошибка в типе данных 'String' and 'System::String' - C++

16.06.2014, 15:29. Просмотров 371. Ответов 11
Метки нет (Все метки)

Всем привет.
помогите, выдает ошибку
[BCC32 Error] File1.cpp(40): E2015 Ambiguity between 'String' and 'System::String'
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
 
 
class String
{
 
private:
    char *str;
public:
    String();
    String(char *s);
    String(const String &);
    ~String();
     String& operator-=(const String& op);
    void input();
    void see();
 
};
 
String::String()
{
    strcpy(str,"");
}
 
String::String(char *s)
{
    strcpy(str,s);
}
 
String::String(const String &a)
{
 
    strcpy(str,a.str);
}
 
String::~String()
{
    if(str) delete [] str;
}
String String:: operator-=(String op)
   {
    int i;
    for(i=0;*(this->str)==op.str[i]&&*(this->str)&&op.str[i];i++){
        this->str++;
    }
    return *this;
 
void String::see()
{
    cout<<"new string: "<<str<<endl;
}
 
void String::input()
{
    cout << "Enter String: ";
    gets(str);
}
 
int main()
{
    String a,b;
    a.input();
    b.input();
    b-=a;
    b.see();
 
    return 0;
}
 
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 15:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в типе данных 'String' and 'System::String' (C++):

Тривиальная ошибка при типе string - C++
Написал код для сортировки текста в алфавитном порядке. Делал все вроде правильно, как говорится, по книжке, но при компиляции выдает очень...

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

system::string - C++
как выводить system::string ?

Преобразование Char в System::String - C++
Здравствуйте! Я пишу программу по типу монитора системных ресурсов. Название процессора решил взять из реестра. В консоли все прошло...

Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()? - C++
Понятное дело, что всё обсуждение будет вертеться вокруг аналога NULL. char* f_0 () { return NULL; } char** f_1 () { ...

11
Croessmah
Эксперт CЭксперт С++
13423 / 7577 / 855
Регистрация: 27.09.2012
Сообщений: 18,663
Записей в блоге: 3
Завершенные тесты: 1
16.06.2014, 15:34 #2
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
class String
{
 
private:
    char *str;
public:
    String();
    String(char *s);
    String(const String &);
    ~String();
     String& operator-=(const String& op);
    void input();
    void see();
 
};
 
String::String()
{
    strcpy(str,"");
}
 
String::String(char *s)
{
    strcpy(str,s);
}
 
String::String(const String &a)
{
 
    strcpy(str,a.str);
}
 
String::~String()
{
    if(str) delete [] str;
}
String & String::operator-=(const String & op)
   {
    int i;
    for(i=0;*(this->str)==op.str[i]&&*(this->str)&&op.str[i];i++){
        this->str++;
    }
    return *this;
}
 
void String::see()
{
    cout<<"new string: "<<str<<endl;
}
 
void String::input()
{
    cout << "Enter String: ";
    gets(str);
}
Ну и память выделить не помешает
1
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
16.06.2014, 15:47  [ТС] #3
в этом куске ругается, та же ошибка
C++
1
2
3
4
5
String::String(const String &a)
{
 
    strcpy(str,a.str);
}
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
16.06.2014, 15:53 #4
Имя класса другое придумай, String у тебя с чем-то совпадает.
0
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
16.06.2014, 16:25  [ТС] #5
Попробую убрать из текста строку

C++
1
#include <vcl.h>
Скорее всего из-за неё возникает конфликт имён.

теперь такая ошибка
[ILINK32 Error] Error: Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES (X86)\EMBARCADERO\RAD STUDIO\7.0\LIB\CP32MTI.LIB|crtlvcl
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
16.06.2014, 16:26 #6
Не надо ничего убирать, если не знаешь зачем оно нужно. Имя сделай другое.
0
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
16.06.2014, 16:46  [ТС] #7
переименовала класс, теперь не компилируется
raised exception class EAccessViolation with message "Access Violation"
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
16.06.2014, 16:49 #8
Покажи, что получилось.
0
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
16.06.2014, 17:15  [ТС] #9
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
//---------------------------------------------------------------------------
   #include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
 
 
class Strin
{
 
private:
    char *str;
public:
    Strin();
    Strin(char *s);
    Strin(const Strin &);
    ~Strin();
     Strin& operator-=(const Strin& op);
    void input();
    void see();
 
};
 
Strin::Strin()
{
    strcpy(str,"");
}
 
Strin::Strin(char *s)
{
    strcpy(str,s);
}
 
Strin::Strin(const Strin &a)
{
 
    strcpy(str,a.str);
}
 
Strin::~Strin()
{
    if(str) delete [] str;
}
Strin & Strin::operator-=(const Strin & op)
   {
    int i;
    for(i=0;*(this->str)==op.str[i]&&*(this->str)&&op.str[i];i++){
        this->str++;
    }
    return *this;
}
 
void Strin::see()
{
    cout<<"new string: "<<str<<endl;
}
 
void Strin::input()
{
    cout << "Enter String: ";
    gets(str);
}
 
int main()
{
    Strin a,b;
    a.input();
    b.input();
    b-=a;
    b.see();
 
    return 0;
}
//---------------------------------------------------------------------------
0
Croessmah
Эксперт CЭксперт С++
13423 / 7577 / 855
Регистрация: 27.09.2012
Сообщений: 18,663
Записей в блоге: 3
Завершенные тесты: 1
16.06.2014, 17:18 #10
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну и память выделить не помешает
кому писал?
0
pupushecka
29 / 29 / 0
Регистрация: 13.06.2011
Сообщений: 165
17.06.2014, 12:48  [ТС] #11
подскажете, как правильно выделить память под str?
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
17.06.2014, 15:01 #12
Тебе надо ещё второй параметр ввести в класс для хранения количества выделенной памяти.
В первом конструкторе делаешь:
C++
1
str = NULL;
Во втором:
C++
1
2
str = new char[strlen(s) + 1];
strcpy(str, s);
В третьем аналогично с учётом длины строки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 15:01
Привет! Вот еще темы с ответами:

Как используя C-String а потом и String class варьировать вывод? - C++
Дана задача: при вводе полного И.О.Ф. (в таком порядке) выводить Ф, И и О(только первую букву и .). И если О не задано - выводить только...

Как преобразовать char* в string и вывести переменную string на экран? - C++
for (int k = 0; k &lt; 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...

Есть ли аналог Map <String,String> чтобы передавать его как указатель на данные? - C++
Добрый день, подскажите, есть ли аналог Map &lt;String,String&gt; чтобы передавать его как указатель на данные? Заранее спасибо!

Заменить использование istringstream на вариант из string или string.h - C++
Как заменить 14 строку функцией из &lt;string&gt; или &lt;string.h&gt; и без &lt;sstream&gt; {deleted} П.5.19.Правил Запрещено создавать темы в виде...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
17.06.2014, 15:01
Ответ Создать тему
Опции темы

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