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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Legend-muay
50 / 50 / 4
Регистрация: 10.03.2010
Сообщений: 165
16.03.2010, 19:06     Использование char* в классах #1
Всем доброе время суток!
В общем пытаюсь создать простейший класс с использованием 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;
}
Подскажите с чем это связано и что можно сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
16.03.2010, 19:19     Использование char* в классах #2
С непониманием того что ты делаешь...
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
16.03.2010, 19:52     Использование char* в классах #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
Сообщений: 165
17.03.2010, 00:08  [ТС]     Использование char* в классах #4
Спасибо))

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

Добавлено через 1 час 54 минуты
Или преобразовать std::string или char * в System::String?
HIMen
 Аватар для HIMen
4105 / 1354 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
17.03.2010, 08:20     Использование char* в классах #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);
}
Yandex
Объявления
17.03.2010, 08:20     Использование char* в классах
Ответ Создать тему
Опции темы

Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru