c++头文件中vector声明错误
c++ error declaring vector in header file
找不到这个问题的答案。我很久没有使用c++了。在这个文件中,512、256、4736和448都用红色下划线表示错误"期望类型说明符"
// AttackSqrs.h
#include <valarray>
#include <vector>
#include <unordered_map>
#include <string>
#include <iostream>
class AttackSqrs
{
public:
AttackSqrs();
~AttackSqrs();
private:
void init();
std::valarray<int> board(512);
std::valarray<int> vrChessPieces(256);
std::valarray<int> vrAttackSqrs(4736);
std::valarray<int> vrNumAttackSqrsEachSqr(448);
};
但是当我创建这个头文件时:
// diag.h
#include <valarray>
#include <vector>
#include <unordered_map>
#include <string>
#include <iostream>
void init();
std::valarray<int> board(512);
std::valarray<int> vrChessPieces(256);
std::valarray<int> vrAttackSqrs(4736);
std::valarray<int> vrNumAttackSqrsEachSqr(448);
错误消失。谢谢你的帮助。
不能这样初始化成员。使用AttackSqrs
构造函数的初始化列表:
class AttackSqrs
{
public:
AttackSqrs();
~AttackSqrs();
private:
void init();
std::valarray<int> board;
std::valarray<int> vrChessPieces;
std::valarray<int> vrAttackSqrs;
std::valarray<int> vrNumAttackSqrsEachSqr;
};
// Then in a CPP file
AttackSqrs::AttackSqrs() : board(512), vrChessPieces(256), vrAttackSqrs(4736),
vrNumAttackSqrsEachSqr(448) {}
在头文件中,您只声明变量及其类型。任何类型的对象构造都在cpp文件中实现。
AttackSqrs.h
class AttackSqrs
{
public:
AttackSqrs();
~AttackSqrs();
private:
void init();
std::valarray<int> board;
std::valarray<int> vrChessPieces;
std::valarray<int> vrAttackSqrs;
std::valarray<int> vrNumAttackSqrsEachSqr;
};
AttackSqrs.cpp
AttackSqrs::AttackSqrs() :
board(512),
vrChessPieces(256),
vrAttackSqrs(4736),
vrNumAttackSqrsEachSqr(448){
}
你的问题是关于向量,但你使用valarray,这是我以前没有使用过的。我来回答向量
需要在构造函数中设置vector的大小。
头文件class AttackSqrs
{
public:
AttackSqrs();
~AttackSqrs();
private:
std::vector<int> board(512);
};
cpp文件AttackSqrs::AttackSqrs()
: board(512)
{
}
或者,由于大小是常量,您可以使用数组。
class AttackSqrs
{
public:
AttackSqrs();
~AttackSqrs();
private:
std::array<int, 512> board; // c++11
int board[512]; // pre-c++11
};
相关文章:
- 在气泡排序程序中未声明错误功能
- 未在此范围内声明错误 'xy'
- 在此范围内未声明错误"Clreol"
- 为什么 C 编译器不在 for 循环体中给出重新声明错误?
- 如何修复范围内的字符串声明错误
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 无法识别的模板声明错误 - 不明白我做错了什么
- C 如何从构造函数中声明(错误C2065未宣布的标识符)
- C 无法解释的类“尚未声明”错误,这是由于名称空间而导致的
- 如何解决声明错误
- 在标题文件中获取声明错误
- 异常声明错误
- "inet_ntoa"未声明错误
- #include <string> 导致很多'<blank>'尚未声明错误
- 类声明错误
- C++成员函数未声明错误时(当它看起来是错误时)
- 代码块 HelloWorld C 示例不起作用:未声明错误"ptrdiff_t"
- 头文件类成员函数声明错误:"incomplete type name in nested name specifier"
- 预期语句和预期声明错误 c++
- 针对 android 编译的问题..."未在此范围内声明"错误