非常简单的问题,但我无法找到令我惊讶的具体问题的答案。
尝试调用更改私有类字符串的类函数时出现一串错误。
编辑:我已经解决了问题 - 我忘了在头文件中包含所需的命名空间和程序集引用。
这是.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'`
答案 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 达
你打败了我!你的答案出现在我发布的时候