我正在学习C ++,我只是把类放在单独的文件中进行练习而已。我有一个getter函数,它返回一个string
(因为该变量另存为string
)。但是,从我的main()
函数中,我不确定如何调用它。我知道问题可能是在调用对象时我需要在某个地方包含string
,但是我不知道如何格式化它。
我知道这是一个相当新手的问题,但是我找不到任何答案。有人可以帮我吗?
(ps。我不是想让这个特定的代码正常工作,因为它没有用。我只是想学习如何将其应用于将来的参考)。
在调用或创建对象时,我曾尝试将string
投掷到几个地方,但总是会出错。我知道我可以通过不封装变量或没有单独的类文件来解决它,但这不是我想要的。
main.cpp
#include <iostream>
#include "usernameclass.h"
#include <string>
using namespace std;
int main()
{
usernameclass usernameobject;
usernameobject.getUsername();
return 0;
}
usernameclass.h
#ifndef USERNAMECLASS_H
#define USERNAMECLASS_H
#include <string>
class usernameclass
{
public:
usernameclass();
std::string getUsername();
void setUsername(std::string name);
askUsername();
private:
std::string usernameVar = "test";
};
#endif
usernameclass.cpp
#include "usernameclass.h"
#include <iostream>
#include "username.h"
#include <string>
using namespace std;
string usernameclass::getUsername(){
return usernameVar;
cout << "test cout" << endl;
}
usernameclass::askUsername(){
string name;
cout << "What is your name?" << endl;
cin >> name;
setUsername(name);
cout << "Ah, so your name is "+usernameVar+", great name I guess!" << endl;
cin.get();
cin.get();
cout << "You're about to do some stuff, so get ready!" << endl;
}
usernameclass::usernameclass(){}
void usernameclass::setUsername(string name){
string* nameptr = &usernameVar;
*nameptr = name;
}
预期结果:运行getUsername()
函数并返回usernameVar
实际结果:未运行getUsername()
函数
答案 0 :(得分:1)
当前代码无法编译,因为您尚未指定' askUsername ()'例程的返回类型,即' void '。
除了“ getUsername ()”中的输出(发生在该功能返回 之后并且应该已收到警告)的其他情况之外,其他情况都很好,我想。
问题:您可以在“ main ()”中以以下方式调用该“ get”方法:
cout << usernameobject.getUsername();
答案 1 :(得分:0)
您的代码的结构应更像这样:
main.cpp
#include <iostream>
#include "usernameclass.h"
int main()
{
usernameclass usernameobject;
// optional:
// usernameobject.askUsername();
// do something with usernameobject.getUsername() as needed...
return 0;
}
usernameclass.h
#ifndef USERNAMECLASS_H
#define USERNAMECLASS_H
#include <string>
class usernameclass
{
public:
std::string getUsername() const;
void setUsername(std::string name);
void askUsername();
private:
std::string usernameVar = "test";
};
#endif
usernameclass.cpp
#include <iostream>
#include "usernameclass.h"
std::string usernameclass::getUsername() const {
return usernameVar;
}
void usernameclass::setUsername(std::string name) {
usernameVar = name;
}
void usernameclass::askUsername() {
std::string name;
std::cout << "What is your name?" << std::endl;
std::getline(std::cin, std::name);
setUsername(name);
std::cout << "Ah, so your name is " << getUsername() << ", great name I guess!" << std::endl;
std::cout << "You're about to do some stuff, so get ready!" << std::endl;
}