Как отобразить результат вызова функции с использованием ссылки на объект в C ++ - PullRequest
0 голосов
/ 18 ноября 2018
#include "pch.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>

using namespace std;
class LetterDistribution
{
public:   char district, trace;  
public:  int random_num; 

public : LetterDistribution(){}
     public: LetterDistribution(char dis)
    {
        district = dis;
        trace = 'Z';
    }

public: string LetterNumbers()
{

    random_num = rand();
     string letter_no  ( district + " " + random_num);
    return letter_no;
    }
};

int main()
{
srand(time(0));
    cout << "Enter district\n"<<endl;
    char dis ;
    cin >> dis;
    LetterDistribution ld(dis);
    cout << ld.LetterNumbers();
    return 0;}

Я получаю сообщение об ошибке во второй последней строке внутри главной "cout << ld.LetterNumbers ();". Я новичок в C ++, я работал на C # ранее. Буду благодарен, если кто-нибудь сможет мне помочь. </strong>

1 Ответ

0 голосов
/ 18 ноября 2018

У вас есть 2 проблемы в функции LetterNumbers:

  1. Вы не можете добавить в строку число, вы должны сначала преобразовать число в строку.Вы можете сделать это с помощью std::to_string(random_num)
  2. Вы не можете начинать конкатенацию строки с символа, так как символ похож на число в c ++, а добавление чего-либо к числу - это число.Вы должны начать с string, даже с пустого.

Таким образом, вся функция может выглядеть примерно так:

string LetterNumbers()
{
  random_num = rand();
  string letter_no  ( std::string("") + district + " " + std::to_string(random_num));
  return letter_no;
}

Другие проблемы: (но не ошибки!)

  • в C ++ вы можете указатьpublic: один раз, и все, что после него, остается public, пока вы его не измените.то же самое для private и protected.
  • вместо <stdio.h>, вы должны использовать <cstdio>, который является оболочкой c ++ для заголовка c.
...