错误1错误C2460:' Square :: string' :使用' Square',正在定义
大家好,我在尝试实现4平方密码时遇到以下错误。我在Square标题和.cpp文件中有两个构造函数。其中一个不带参数而另一个带字符串。带字符串的那个抛出错误。
square.h
#include <string>
#ifndef SQUARE_H
#define SQUARE_H
class Square
{
public:
Square();
Square(string);
~Square();
char mat[5][5];
bool used[25];
char getChar(int, int);
int* getPos(char);
};
#endif
以下是.cpp文件中的布局。
Square::Square(string s)
{
//Code in here can show on request!
}
我认为字符串与它有关,但我不确定。
答案 0 :(得分:1)
而不是
Square( string );
你需要
Square( std::string );
未显示的代码中可能存在其他错误。
不是错误,但通常通过引用传递std::string
,以避免不必要的复制。
另外,提示:使用现代编译器,您可以使用#pragma once
而不是包含警戒。请记住,它是一个普遍支持的事实上的标准,而不是官方标准的一部分。我发现它更清洁,不知何故,它减少了提出独特,独特的包含警卫符号的需要。
答案 1 :(得分:0)
还不足以真正了解这里发生了什么。你所拥有的一切看起来都很好。
也许你需要命名空间?
Square(std::string);
答案 2 :(得分:0)
请参阅(此处为:Error : Class A uses Class B, which is being defined)以及here。
字符串是问题所在。它来自std名称空间,因此每次出现字符串前缀为&#39; std ::&#39;,例如为你的标题:
#include <string>
#ifndef SQUARE_H
#define SQUARE_H
class Square
{
public:
Square();
Square(std::string);
~Square();
char mat[5][5];
bool used[25];
char getChar(int, int);
int* getPos(char);
};