Как вернуть значение приватной строки члена в классе

0

Я хочу получить значение частного name строки в sampleclass.

#include <iostream>
#include <string>

using namespace std;

class sampleclass {
public:
    int getname(){ //this is my attempted getter
    string x = name;
    }
private:
    string name= "lance"; //this is the private I want returned by value

};

int main(){    
    sampleclass object;
    cout << object.getname();
}
  • 2
    Если он получает имя, почему он возвращает (хотя он даже ничего не возвращает) int ?
  • 1
    string getname() { return name; }
Показать ещё 5 комментариев
Теги:
getter

2 ответа

4
Лучший ответ

Вам нужно вернуть строку в вашей функции getname(), так как ваша переменная name является строкой

string getname() {
    return name;
}

Поступая таким образом, вы получаете новый экземпляр std::string как результат rvalue, который затем выводится на экран в вашей основной функции.

Как еще одна мысль, не связанная с вашей проблемой: нет проблем в использовании пространства имен глобально для небольших программ, подобных этой, но вы должны стараться не привыкать к ней, потому что это может привести к конфликтам имен в разных пространствах имен в больших проектах,

  • 0
    Я думал, что это-> имя
  • 0
    @ Nighthawk441 this-> подразумевается (если не требуется разрешение области видимости).
0
#include <iostream>
#include <string>

using namespace std;

class sampleclass{
public:
    sampleclass() : name("lance") { }
    string getname(){ // return a string (not an int)
       return name;
    }
private:
    string name;

};
int main(){

    sampleclass object;
    cout << object.getname();

}

g++ test.cpp &&./a.out lance

  • 1
    name уже правильно инициализировано (семантически эквивалентно этому).
  • 0
    Это действительный код C ++? Никогда не видел этого в реальном мире кода.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню