这是我的实施文件:
using namespace std;
#include <iostream>
#include <iomanip>
#include <string>
#include <stack> //line 5
#include "proj05.canvas.h"
//----------------Constructor----------------//
Canvas::Canvas() //line 10
{
Title = "";
Nrow = 0;
Ncol = 0;
image[][100]; // line 15
position.r = 0;
position.c = 0;
}
//-------------------Paint------------------// line 20
void Canvas::Paint(int R, int C, char Color)
{
cout << "Paint to be implemented" << endl;
}
我得到的错误是:
proj05.canvas.cpp: In function 'std::istream& operator>>(std::istream&,
Canvas&)':
proj05.canvas.cpp:11: error: expected `;' before '{' token
proj05.canvas.cpp:22: error: a function-definition is not
allowed here before '{' token
proj05.canvas.cpp:24: error: expected `}' at end of input
proj05.canvas.cpp:24: error: expected `}' at end of input
这些似乎是简单的语法错误,但我不确定是什么问题。有人可以为我解码这些吗?我真的很感激,谢谢你的时间!
修改
以下是我的.h文件中Canvas的定义:
#ifndef CANVAS_H
#define CANVAS_H
#include <iostream>
#include <iomanip>
#include <string>
#include <stack>
class Canvas
{
public:
Canvas(); void Paint(int R, int C, char Color);
const int Nrow;
const int Ncol;
string Title;
int image[][100];
stack<int> path;
struct PixelCoordinates
{
unsigned int r;
unsigned int c;
} position;
};
#endif
答案 0 :(得分:8)
"proj05.canvas.h"
我打赌问题就在那里。可能不 ;课后def
答案 1 :(得分:6)
您必须使用initializer list
初始化const-members
试试这个:
#include <iostream>
#include <iomanip>
#include <string>
#include <stack> //line 5
#include "proj05.canvas.h"
using namespace std;
//----------------Constructor----------------//
Canvas::Canvas():Nrow(),Ncol() // Initializer list
{
Title = "";
//initialize image[][] correctly, your way is syntactically incorrect
position.r = 0; //correction here
position.c = 0; // and here
}
//-------------------Paint------------------// line 20
void Canvas::Paint(int R, int C, char Color)
{
cout << "Paint to be implemented" << endl;
}
答案 2 :(得分:2)
少数事情:
<强> 1 强>
PixelCoordinates.r = 0;
PixelCoordinates.c = 0;
应该是:
position.r = 0;
position.c = 0;
<强> 2 强>
image
已经宣布。这是什么:
image[][];
答案 3 :(得分:1)
听起来你忘了在课程定义后加上分号。查看"proj05.canvas.h"
。你应该看到类似的东西:
class Canvas{
...
};
答案 4 :(得分:1)
有一件事让我的眼睛看错了/怪异的是image [] []。那并没有真正做任何事情。另外,我不相信你可以在ctor列表之外分配常数成员。
最后,您对PixelCoordinates的任务完全错误。您已经创建了一个本地结构定义,但没有创建一个使用它的成员,因此您根本无法为其分配任何内容 - 尤其是结构的标题。那真的会让编译器感到困惑。
答案 5 :(得分:0)
让人惊讶。
(不是您具体问题的答案,但......)
您还应该删除
using std;
.h文件中没有商家。 我猜想奇怪的格式化.h文件可能是个问题。当然,它对于文件系统来说是合法的,但也可能是这样。还要确保在课程上有结尾分号。
你需要为你拥有的数组填充两个维度(可能是一个可怕的设计,无论如何都要使用该类...)
答案 6 :(得分:0)
无论其他错误的原因是什么,memeber定义int image[][100]
都是非法的。无法使用不完整类型声明类的非静态数据成员。必须明确指定数组的所有维度。