Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
1

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

06.03.2013, 18:51. Просмотров 469. Ответов 9
Метки нет (Все метки)

Помогите понять в чём проблема,в классе 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();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2013, 18:51
Ответы с готовыми решениями:

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов)
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как...

Определение классов и методов
Доброго времени суток! Изучаю язык не долго, самостоятельно и есть проблемка - не могу понять, как...

Вызов методов из классов
class B; class A { public: void foo() { B x; //Хотел вызвать метод нижнего класса. (Без...

Наследование классов. Конфликт методов
Здравствуйте! Проблема следующая. Написал операции постфиксной и префиксной декрементации и...

9
415 / 414 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
06.03.2013, 18:56 2
ты не создаёшь объект TMessage, а просто объявляешь указатель
0
322 / 305 / 59
Регистрация: 06.03.2013
Сообщений: 869
06.03.2013, 19:00 3
Кстати говоря, а это в студии писалось? Судя по stdafx - в студии. Оная у меня лишь на strcpy выругалась.

Да, и саму ошибку пожалуйста)
0
415 / 414 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
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();
}
2
322 / 305 / 59
Регистрация: 06.03.2013
Сообщений: 869
06.03.2013, 19:08 5
О, дурень я! И ведь действительно)
0
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 19:29  [ТС] 6
спасибо
но вот ещё,у меня ругается именно вот здесь
C++
1
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
подчеркивает AddMessage

Добавлено через 4 минуты
я когда по модулям расписываю у меня ошибка,а если нет то нет её
0
415 / 414 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
06.03.2013, 19:34 7
компилятор чего пишет?
0
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 21:25  [ТС] 8
error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
0
415 / 414 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
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, работает...
0
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
06.03.2013, 22:29  [ТС] 10
ладно спасибо,потом разберусь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2013, 22:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написание классов и методов к ним
Уважаемые программисты, подскажите как пишутся классы для игр и методы. Я сейчас пишу игру...

Вызов методов классов по указателям
Имеется управляющий класс, в котором определен указатель на функцию: void (Operation*) (); ...

Оболочка для потков-методов классов
Задача: написать удобную оболочку для реализации многопоточных классов. Пишу: ThreadWrap.h:...

Вызов методов базового и производного классов
Народ, объясните тупому механику раннего связывания. Вывод программы, что ниже, 22. Хотя если...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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