创建带有参数C ++的单独的类文件函数

时间:2014-11-30 02:41:38

标签: c++

非常简单的问题,但我无法找到令我惊讶的具体问题的答案。

尝试调用更改私有类字符串的类函数时出现一串错误。

编辑:我已经解决了问题 - 我忘了在头文件中包含所需的命名空间和程序集引用。

这是.h文件代码:

#ifndef ANIMAL_H
#define ANIMAL_H

class Animal
{
public:
    Animal();
    ~Animal();
    string getName();
    void setName(string animalName);
private:
string name;
};

#endif

这是类.cpp:

#include "Animal.h"
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

Animal::Animal()
{

}


Animal::~Animal()
{
}

void Animal::setName(string animalName)
{
name = animalName;
}

string Animal::getName()
{
return name;
}

最后,这里是int main(),我试图调用这些函数(我在编译时遇到了一堆错误)

int main()
{
Animal chicken;

chicken.setName("gary");

cout << chicken.getName() << endl;

_getch();
}

错误消息包括:

error C2061: syntax error : identifier 'string'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

`error C2146: syntax error : missing ';' before identifier 'getName'`   

2 个答案:

答案 0 :(得分:1)

您似乎忘记在标题中加入<string>了。字符串对象也存在于std命名空间中,因此您需要提供一个完全限定的名称才能使用它(不要将using namespace添加到标题中。)

#ifndef ANIMAL_H
#define ANIMAL_H
#include <string>  // You need to include this

class Animal
{
public:
    Animal();
    ~Animal();
    std::string getName();
    void setName(std::string animalName);
private:
    std::string name;
};

#endif

答案 1 :(得分:0)

在每个字符串声明之前,您的类头缺少字符串库声明和std ::。

#ifndef ANIMAL_H
#define ANIMAL_H

#include <string>

class Animal
{
public:
    Animal();
    ~Animal();
    std::string getName();
    void setName(std::string animalName);
private:
std::string name;
};

#endif

@edit 达

你打败了我!你的答案出现在我发布的时候