关于通过Get和Set方法传递字符串

时间:2013-03-19 01:40:02

标签: c++ string

我正在开发一个项目,要求用户输入一个字符串,然后通过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是不相容的。我很确定它与我通过参数传递字符串有关。有什么想法吗?

2 个答案:

答案 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;

更好。