Member 12685307 Ответов: 2

Использование переменных в clss (C++)


#include <iostream>
#include<string>
using namespace std;
class jani{
private:
    string Name;
public:
    void setName(string x){Name=x}
    void string getName(){return Name}


};

int main(){
   jani j1;
   j1.setName("I kill you");
   cout<<j1.getName();

return 0;
}


Что я уже пробовал:

Я пытаюсь использовать строку в классе, и у меня есть проблема.

есть погрешность в этой линии:

void string getName () {return Name}

Richard MacCutchan

Это как-то связано с тем, что вы пытаетесь вернуть значение из функции, которую вы объявили как void, то есть она не возвращает никакого значения.

Afzaal Ahmad Zeeshan

Что еще хуже, смотрите еще раз, он помечен void string.

Richard MacCutchan

Ха-ха, я пропустил это.

2 Ответов

Рейтинг:
7

Patrice T

void string getName(){return Name}

Функция, возвращающая void string тип невозможен, потому что оба ключевых слова противоречат друг другу, это восходит к языку Си.
Вот хорошая лекция о С, это не пустая трата времени, так как С является предком с++, так что в основном то, что относится к С, также относится и к с++.
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]


Рейтинг:
19

Afzaal Ahmad Zeeshan

В C++ они называются полями объекта, а не переменными, как в случае обычных функций.

Как уже упоминал Ричард в своем комментарии к вашему вопросу, проблема заключается в самой вашей функции. Вы путаетесь со свойствами геттеры и сеттеры[^]; который имеет возвращаемый тип и который требует параметра.

Сеттер требует параметра и обычно имеет void Возвращение, что означает, что он ничего не возвращает. Вы также можете вернуть логическое значение, указывающее состояние. В то время как, с другой стороны, геттер имеет возвращаемый тип (отличный от void) и не обязательно требует параметра. Вам также нужно немного узнать о типах возвращаемых данных; void string возвращаемый тип.

Измените свой код на следующий,

void setName(string x) { Name = x; }
string getName() { return Name; }

Вы также пропустили точку с запятой в конце операторов, C++ требует точки с запятой для завершения операторов.