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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Legend-muay
50 / 50 / 4
Регистрация: 10.03.2010
Сообщений: 172
#1

Использование char* в классах - C++

16.03.2010, 19:06. Просмотров 1891. Ответов 4
Метки нет (Все метки)

Всем доброе время суток!
В общем пытаюсь создать простейший класс с использованием char* для представления строк
При компиляции появляются непонятные ошибки(мне непонятные). Использую среду разработки MVS2008
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
//Заголовочный файл с описанием класса
#pragma once
 
class Test
{
private:
    char *name;
public:
    Test(void);//конср-р по ум-ю
    Test(char *snew, int count);//char *snew - строка для name, count - количество символов
    char * GetInfo(void);//получить значение name
    void SetInfo(char *snew, int count);//записать новое зн-е для name
};
//файл реализации класса описанного выше
#include "StdAfx.h"
#include "Test.h"
 
Test::Test(void)
{
    Test::name = new char[1];
}
 
Test::Test(char *snew, int count)
{
    name = new char[count];
    if (name) name = snew;
}
 
Test::GetInfo(void)
{//Здесь первая ошибка: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
//Здесь и вторая: int Test::GetInfo(void): перегруженная функция отличается от 'char *Test::GetInfo(void)' только возвращаемым типом 
    return name;
}
 
Test::SetInfo(char *snew, int count)
{//Здесь выкидывает подобные ошибки
    delete [] name;
    name = new char[count];
    if (name) name = snew;
}
Подскажите с чем это связано и что можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2010, 19:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование char* в классах (C++):

Использование статический данных в классах - C++
Добрый день! Помогите, пожалуйста! Есть задача: создать в классе статическое поле - годовой процент. И присвоить этому полю какое-либо...

Использование полей и методов в дочерних классах - C++
Возникла проблема class Subj { public: char name; char prepod; int hours; bool exam; bool credit;

Использование char в классе - C++
4. Как сделать все тоже самое(с пункта 1 по 3) но чтобы это были константные значения которые в дальнейшем нельзя изменить? 1. как...

Подскажите использование char** на примере - C++
Подскажите использование char** на примере

Использование переменной типа char в цикле for - C++
Ребята, подскажите пожалуйста, как использовать 8-ми битную переменную в цикле for? Неправильный пример - for(char i = 0; i < N; i++)

Использование функций Getch(), putch(char) - C++
Ребята помогите разобраться. Толком не объяснили. Сижу ломаю голову. как это прописать. *** Написать функцию, которая при вводе с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
16.03.2010, 19:19 #2
С непониманием того что ты делаешь...
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
16.03.2010, 19:52 #3
Нужно указать тип возвращаемого значения
C++
1
2
3
4
5
6
7
8
9
10
11
char* Test::GetInfo(void)
{
        return name;
}
 
 void Test::SetInfo(char *snew, int count)
{
        delete [] name;
        name = new char[count];
        if (name) name = snew;
}
И ещё
if (name) name = snew;
тут ты просто копируешь значения указателя
snew в name и эти указатели теперь указывают на одну и ту-же строку.
тут лучше использовать
strcpy(name,snew);
Legend-muay
50 / 50 / 4
Регистрация: 10.03.2010
Сообщений: 172
17.03.2010, 00:08  [ТС] #4
Спасибо))

Добавлено через 2 часа 15 минут
А можно вместо char* использовать System::String?

Добавлено через 1 час 54 минуты
Или преобразовать std::string или char * в System::String?
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
17.03.2010, 08:20 #5
C++
1
2
3
4
char* SystemStringToChar(System::String^ string) 
{
    return (char*)(void*)Marshal::StringToHGlobalAnsi(string);
}
C++
1
2
3
4
System::String^ CharToSystemString(char* ch) 
{
    return gcnew System::String(ch);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2010, 08:20
Привет! Вот еще темы с ответами:

Использование стандартной библиотеки С. Char и опции консольного приложения - C++
Всем привет. Сломал уже голову над тем, как можно в С++ из char вытащить число. В char передаются аргументы при запуске консольного...

Использование знака пробел при вводе переменной типа char[] - C++
Доброго времени суток! При идентификации переменных при применении знака пробел, все, что идет до него "уходит" в первую переменную,...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...


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

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

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