Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для TeachME
1 / 1 / 3
Регистрация: 10.12.2016
Сообщений: 48

Return type метода

22.03.2017, 21:33. Показов 1195. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема состоит в том, что при выводе массива, выдод имени работает неправильно.


main.cpp
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
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stdafx.h"
#include "EXAM.h"
#include <iostream>
using namespace std;
using program::EXAM;
 
const int size = 25;
int main()
{   
    char naMe [size];
    int daTe=0;
        int maRk=0;
    //char* (EXAM::*pn)();
        //pn=&EXAM::getName;
    //int (EXAM::*pd)();
    //pd=&EXAM::getDate;
    //int (EXAM::*pm)();
    //pm=&EXAM::getMark;
    
    int n = 0;
    cout<<"Please type the size of the array: "; 
    cin>>n;
    cout<<endl;
    EXAM* Array = new EXAM[n];
    for (int i=0;i<n;i++)
    {   
        cout<<endl;
        cout<<"Please type a name of the student: ";
        cin>>naMe;
        Array[i].setName(naMe);
        cout<<endl<<"Please type the date of exam: ";
        cin>>daTe;
        Array[i].setDate(daTe);
        cout<<"Please type mark: ";
        cin>>maRk;
        Array[i].setMark(maRk); 
    }
    /*EXAM *B= new EXAM;
    EXAM A("J",12,31);
    EXAM C=A;
    B->setName("B");
    B->setDate(11);
    B->setMark(90);
    cout<<"Name: "<<B->getName()<<". Mark: "<<B->getMark()<<". Date: "<<B->getDate()<<endl;
    cout<<"Name: "<<A.getName()<<". Mark: "<<(A.*pm)()<<". Date: "<<(A.*pd)()<<endl<<endl<<endl;*/
    for(int i=0;i<n;i++)
    {
     cout<<"Name: "<<Array[i].getName()<<endl;//проблема здесь
     cout<<"Date: "<<Array[i].getDate()<<endl;
     cout<<"Mark: "<<Array[i].getMark();
     cout<<endl<<endl;
    }    
    delete B;
    delete [] Array;
    system("pause");
    return 0;
}
EXAM.h
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
#pragma once
 
namespace program
{  
    class EXAM 
    {
private:
    char* name;
    int date;
    int mark;
public:
      EXAM();//конструктор без параметрів
      EXAM(const EXAM&);//конструктор копіювання
      EXAM(char*,int,int);//конструктор з параметрамм
      ~EXAM();//деструктор
      void setDate(int);//метод для встановлення дати
      void setMark(int);//метод для встановлення оцінки
      void setName(char*);//метод для встановлення імені
      int getDate();//метод для отримання дати
      int getMark();//метод для отримання оцінки
      char* getName();//метод для отримання імені
 
    };
}

EXAM.cpp
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
45
46
47
48
49
50
 #include "stdafx.h"
  #include "EXAM.h"
  #include <iostream>
namespace program
{
      EXAM::EXAM()
  {
      std::cout<<"Constructor without parameters."<<std::endl;
  }
  EXAM::EXAM(char* Setname,int Setdate,int Setmark)
  {
      EXAM::setName(Setname);
      EXAM::setDate(Setdate);
      EXAM::setMark(Setmark);
      std::cout<<'\n'<<"Constructor with parameters, was called for object "<<this<<'\n';
  }
  EXAM::~EXAM(void)
  {
      std::cout<<'\n'<<"Destructor was called for object "<<this<<'\n';
  }
  void EXAM::setDate(int Date)
  {
      date=Date;
  }
  int EXAM::getDate()
  {
      return date;
  }
  void EXAM::setMark(int Mark)
  {
      mark=Mark;
  }
  int EXAM::getMark()
  {
      return mark;
  }
  void EXAM::setName(char* Name)
  {
      name=Name;
  }
  char* EXAM::getName()
  {
      return name;
  }
  EXAM::EXAM(const EXAM&)
  {
      std::cout<<'\n'<<"Copy constructor was called for object "<<this<<'\n';
  }
 
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2017, 21:33
Ответы с готовыми решениями:

Ошибка 'constructors not allowed a return type'
Помогите, пожалуйста, разобраться, никак не могу понять, где ошибки. #ifndef SCORE_H_ #define SCORE_H_ #include &lt;string&gt; ...

Странное с return метода
На первом скриншоте видно, что в некотором методе update() указатель this указывает на.. эм.. что-то страшное, хотя всё должно быть...

Return type of 'main' is not `int'
Структура .Список помогите розобратся почкму не работает..)) #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct student { ...

4
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
22.03.2017, 21:40
Используй std::string вместо char*.

А вообще, проблема в том, что все экземпляры класса хранят в поле name указатель на одну и ту же область памяти (массив naMe в функции main).
0
 Аватар для TeachME
1 / 1 / 3
Регистрация: 10.12.2016
Сообщений: 48
22.03.2017, 22:08  [ТС]
Как сделать такое с char a не со string?
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
22.03.2017, 22:18
Лучший ответ Сообщение было отмечено TeachME как решение

Решение

Цитата Сообщение от TeachME Посмотреть сообщение
Как сделать такое с char a не со string?
C++
1
2
3
4
5
6
7
8
9
class EXAM 
{
private:
    char name[25];
    // ...
    void EXAM::setName(const char* Name)
    {
          strcpy(name, Name);
    }
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.03.2017, 22:21
В твоём варианте надо память выделять для name, и копировать содержимое строки, а не присваивать.
Существенно проще будет, если откажешься от указателя и заменишь на массив char. Тогда просто копирование.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2017, 22:21
Помогаю со студенческими работами здесь

Ошибка return type is incomplete
В строке Point Tools::polPointText(QVector&lt;Point&gt; polygon, int i, double dist) {... Ошибка 'polygon' has incomplete type, да и вообще...

Ошибка Method most have a return type в InitializeComponent()
При компиляции выдает ошибку Method most have a return type в InitializeComponent() partial class Form1 : Form { ...

Исправить ошибку Method must have a return type
Задание такое) Дана строка чисел через запятую. Сформировать новую строку, состоящую из чисел кратных указанному пользователю числу....

Invalid method declaration return type required
код из учебника, однако выдает ошибку при попытке сборки..... вот сама ошибка java: F:\paint\src\pPainTt.java:17: invalid method...

Ошибка: 'sleep': no function return type, using 'int'
Пользуюсь DosBox 0.74-QC(поменять не могу,нужно на нем) ,так вот,столкнулся с такой проблемой,что даже банальные функции для осуществления...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru