为什么C++不允许我在类中使用字符串作为数据成员?
Why won't C++ let me use a string as a data member in a class?
所以我在一个名为 Classes.h 的头文件中有以下代码:
#ifndef CLASSESS_H
#define CLASSESS_H
class PalindromeCheck
{
private:
string strToCheck;
string copy;
public:
PalindromeCheck(string testSubject) : strToCheck(testSubject) {} //Constructor
void Check()
{
copy = strToCheck; //Copy strToCheck into copy so that once strToCheck has been reversed, it has something to be checked against.
reverse(strToCheck.begin(), strToCheck.end()); //Reverse the string so that it can be checked to see if it is a palindrome.
if (strToCheck == copy)
{
cout << "The string is a palindrome" << endl;
return;
}
else
{
cout << "The string is not a palindrome" << endl;
return;
}
}
};
#endif
现在我在源文件中有以下代码:
#include <iostream>
#include <string>
#include <algorithm>
#include "Classes.h"
using namespace std;
int main()
{
PalindromeCheck firstCheck("ATOYOTA");
firstCheck.Check();
return 0;
}
当我使用 Visual C++ 编译器编译此代码时,我收到了大量错误消息,这些错误消息都源于前四条:
"strToCheck":未知的覆盖说明符 缺少类型说明符 - 假定为 int。 "copy":未知覆盖说明符 缺少类型说明符 - 假定为 int。
我尝试将#include <string>
添加到头文件中并重新编译它,但它完全没有做任何事情。 这让我感到困惑,因为我认为我可以使用字符串作为数据类型,但显然不在类中? 如果有人可以帮助我,那就太好了,因为我不知道为什么我的代码不起作用。
您需要在类标头本身中#include <string>
。
您还需要使用std::
命名空间(最好(或者也向该标头添加using namespace std
(我强烈建议不要这样做(。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 静态数据成员模板专用化的实例化点在哪里
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 为什么C++不允许我在类中使用字符串作为数据成员?
- C++为什么 int 变量可以声明为类的私有数据成员,但不能声明为字符串变量
- 警告:ISO C++禁止将静态“constexpr char*”数据成员的字符串常量转换为“char*”
- 如何在C 中的另一个对象的同一数据成员中输入另一个字符串
- 使用 #include 按<algorithm>字符串数据成员对类对象的向量进行排序
- 使用结构非类型可变参数模板参数初始化结构的字符串数据成员
- 字符串数据成员的指针错误 - 获取访问冲突
- 在跨DLL边界使用的类中将字符串用作私有数据成员是否安全?