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

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

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

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

16.03.2010, 19:06. Просмотров 1713. Ответов 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++ Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& C++
C++ Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь(
C++ Подскажите использование char** на примере
C++ Использование полей и методов в дочерних классах
Использование переменной типа char в цикле for C++
Использование знака пробел при вводе переменной типа char[] C++
C++ Использование функций Getch(), putch(char)
C++ Использование статический данных в классах
Использование char в классе C++
C++ Использование стандартной библиотеки С. Char и опции консольного приложения

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1234 / 772 / 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
4114 / 1363 / 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* в классах
Ответ Создать тему
Опции темы

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