我正在开发一个项目,要求用户输入一个字符串,然后通过get和set函数只显示字符串。但是我遇到的问题实际上是让用户输入字符串然后将它们传递给get和set函数。这是我的代码: 这是我的Main.cpp:
#include "stdafx.h"
#include <iostream>
#include "Laptop.h"
#include<string>
using namespace std;
int main()
{
Laptop Brand;
string i;
cout << "Enter your brand of laptop : ";
cin >> i;
Brand.setbrand (i);
return 0;
}
这是我的Laptop.cpp:
#include "stdafx.h"
#include <iostream>
#include "Laptop.h"
#include <string>
using namespace std;
void Laptop::setbrand(string brand)
{
itsbrand = brand;
}
string Laptop::getbrand()
{
return itsbrand;
}
这是我的laptop.h:
#include<string>
class Laptop
{
private :
string itsbrand;
public :
void setbrand(string brand);
string getbrand();
};
在我的laptop.cpp中,我遇到了setbrand和getbrand的错误。他们说getbrand和setbrand是不相容的。我很确定它与我通过参数传递字符串有关。有什么想法吗?
答案 0 :(得分:1)
这里的好处是在头文件中使用std::string
而不是string
:
class Laptop
{
private :
std::string itsbrand;
public :
void setbrand(std::string brand);
std::string getbrand();
};
与其他文件不同,您没有using namespace std
。我实际上建议在任何地方使用std::string
。它更安全,可以避免以后出现更糟糕的问题。
答案 1 :(得分:1)
您错过了在laptop.h
文件中包含正确的命名空间,因此编译器无法在当前(全局)命名空间中找到任何声明的string
类。只需在文件的开头using std::string;
。
另一方面,我会避免使用通用
using namespace std;
因为它首先打击了拥有命名空间的目的。通常最好指定您正在使用的类。因此:
using std::string;
更好。