所以我在几个文件中有一些代码: cells.cpp:
#include "cells.h"
#include <iostream>
using namespace std;
char convertIntChar (int symbolNumber)
{
char charR;
switch (symbolNumber)
{
case 0:
charR='0';
break;
// lust of case code here
case 63:
charR='\\';
break;
}
return charR;
}
class cell
{
public:
int iPosition;
char chPosition;
cell ()
{
static int i = -1;
i++;
chPosition=convertIntChar (i);
iPosition=i;
cout << " " << iPosition; //two lines of code to test
cout << " " << chPosition; //constructor
}
protected:
};
的main.cpp
#include <iostream>
#include "cells.h"
#include "pointer.h"
using namespace std;
int main()
{
cout << "Hello world!" << endl;
createPointer();
cell cells[64];
return 0;
}
并且明显是一个细胞。
#ifndef CELLS_H_INCLUDED
#define CELLS_H_INCLUDED
#pragma once
class cell
char convertIntChar(int symbolNumber);
#endif // CELLS_H_INCLUDED
我有一个听起来像的错误 // filepath \ | 5 | error:声明'convertIntChar'|中的两个或多个数据类型 || ===构建完成:1个错误,0个警告(0分7秒)=== | 它能成为什么样的人。抱歉,无论如何,对于noob问题。
答案 0 :(得分:2)
首先,这个前向声明需要一个分号:
class cell;
// ^
其次,你不能在这里使用前瞻声明。 main.cpp
需要查看cell
类定义。所以你应该把定义放在cells.h
中。例如:
cells.h
:
#ifndef CELLS_H_INCLUDED
#define CELLS_H_INCLUDED
class cell
{
public:
int iPosition;
char chPosition;
cell ();
};
char convertIntChar(int symbolNumber);
#endif
cells.cpp
:
#include "cells.h"
#include <iostream>
char convertIntChar (int symbolNumber)
{
char charR;
// as before
return charR;
}
cell::cell ()
{
static int i = -1;
i++;
chPosition=convertIntChar (i);
iPosition=i;
std::cout << " " << iPosition; //two lines of code to test
std::cout << " " << chPosition; //constructor
}
答案 1 :(得分:0)
你在cpp文件中有class cell
,它应该进入.h文件。
然后在cells.h中,您在;
之后错过class cell
。
在cell.h中的前向声明的Insterad,把课程放在那里。