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

Связь классов и методов - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 18:51     Связь классов и методов #1
Помогите понять в чём проблема,в классе TTopic создал метод типа другого класса,а компилятор на это ругается,что не так?
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
class TMessage
{
public:
    char Topic[30];
    char Author[30];
    char Text[250];
};
 
class TTopic
{
public:
    TMessage* AddMessage(char* topic,char* author,char* text);
    void DeleteMessage(int n);
    void GetMessage();
    int Count();
};
 
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
{   
    TMessage* p;
    strcpy(p->Topic,topic);
    strcpy(p->Author,author);
    strcpy(p->Text,text);
    return p;
}
 
 
 
void main()
{
    int* i=0;
    TTopic top;
    TMessage* p=top.AddMessage("Stiven King","kniga","parapapa");
    cout<<&p;
    getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
06.03.2013, 18:56     Связь классов и методов #2
ты не создаёшь объект TMessage, а просто объявляешь указатель
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
06.03.2013, 19:00     Связь классов и методов #3
Кстати говоря, а это в студии писалось? Судя по stdafx - в студии. Оная у меня лишь на strcpy выругалась.

Да, и саму ошибку пожалуйста)
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
06.03.2013, 19:07     Связь классов и методов #4
Цитата Сообщение от SKS-65 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
{   
    TMessage* p;//просто указатель который ссылается на мусор, объект не создан
    strcpy(p->Topic,topic);
    strcpy(p->Author,author);
    strcpy(p->Text,text);
    return p;
}
нужно заменить на
C++
1
TMessage* p = new TMessage;
тогда нужно добавить в маин + так выводить нельзя

C++
1
2
3
4
5
6
7
8
9
...
    TMessage* p=top.AddMessage("Stiven King","kniga","parapapa");
    //cout<<&p; ошибка
    cout<<p->Topic<<'\n'
          <<p->Author<<'\n'
          <<p->Text<<'endl;
    delete p;
    getch();
}
lpvoid
 Аватар для lpvoid
318 / 301 / 17
Регистрация: 06.03.2013
Сообщений: 869
06.03.2013, 19:08     Связь классов и методов #5
О, дурень я! И ведь действительно)
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 19:29  [ТС]     Связь классов и методов #6
спасибо
но вот ещё,у меня ругается именно вот здесь
C++
1
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
подчеркивает AddMessage

Добавлено через 4 минуты
я когда по модулям расписываю у меня ошибка,а если нет то нет её
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
06.03.2013, 19:34     Связь классов и методов #7
компилятор чего пишет?
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 21:25  [ТС]     Связь классов и методов #8
error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
06.03.2013, 21:34     Связь классов и методов #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
#include <iostream>
#include <conio.h>
#include <cstring>
 
using namespace std;
class TMessage
{
public:
    char Topic[30];
    char Author[30];
    char Text[250];
};
 
class TTopic
{
public:
    TMessage* AddMessage(char* topic,char* author,char* text);
    void DeleteMessage(int n);
    void GetMessage();
    int Count();
};
 
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
{
    TMessage* p = new TMessage;
    strcpy(p->Topic,topic);
    strcpy(p->Author,author);
    strcpy(p->Text,text);
    return p;
}
 
 
int main()
{
    int* i=0;
    TTopic top;
    TMessage* p=top.AddMessage("Stiven King","kniga","parapapa");
    cout<<p->Author<<'\n'
       <<p->Text<<'\n'
      <<p->Topic<<'\n'<<endl;
    delete p;
    getch();
    return 0;
}
по модулям не разносил, компилятор MSVC, работает...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2013, 22:29     Связь классов и методов
Еще ссылки по теме:

Хранение экземпляров классов-наследников, и вызов их методов C++
Вызов методов классов по указателям C++
C++ Реализ иерархии классов и соответствующих им методов!

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

Или воспользуйтесь поиском по форуму:
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 22:29  [ТС]     Связь классов и методов #10
ладно спасибо,потом разберусь
Yandex
Объявления
06.03.2013, 22:29     Связь классов и методов
Ответ Создать тему
Опции темы

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