Я хочу получить значение частного 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();
}
Вам нужно вернуть строку в вашей функции getname()
, так как ваша переменная name
является строкой
string getname() {
return name;
}
Поступая таким образом, вы получаете новый экземпляр std::string
как результат rvalue
, который затем выводится на экран в вашей основной функции.
Как еще одна мысль, не связанная с вашей проблемой: нет проблем в использовании пространства имен глобально для небольших программ, подобных этой, но вы должны стараться не привыкать к ней, потому что это может привести к конфликтам имен в разных пространствах имен в больших проектах,
this->
подразумевается (если не требуется разрешение области видимости).
#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
name
уже правильно инициализировано (семантически эквивалентно этому).
int
?string getname() { return name; }