我收到了错误:
asteroid.obj:错误LNK2001:未解析的外部符号"私人: static char(* Asteroid :: Image)[4]" (?图片@ @@小行星0PAY03DA) 1> C:\ Users \ john \ Documents \ Visual Studio 2010 \ Projects \ assignment3.1 \ Debug \ assignment3.1.exe:致命错误 LNK1120:1个未解析的外部
我在Code中看不到我的问题。在我的计划中唯一改变的是制作我的" Image"和#34; LoadImage"成员职能。
这就是我现在的头文件中的代码(跳过一些公共函数)
class Asteroid
{
private:
static const int ROWS = 3;
static const int COLUMNS = 4;
int row;
int column;
int row_size;
int column_size;
unsigned int ore_value;
static char Image[ROWS][COLUMNS];
public: static void LoadImage();
};
这就是.cpp文件中的LoadImage()函数的样子
void Asteroid::LoadImage()
{
string myline;
ifstream asteroid_image_data("asteroid.txt");
if (asteroid_image_data.fail())
{
cerr << "Asteroid image file is not available" << endl;
return;
}
for (unsigned int i = 0; i < ROWS; i++)
{
getline(asteroid_image_data, myline, '\n');
if (!asteroid_image_data)
{
cerr << "Asteroid image file is missing some data" << endl;
return;
}
for (unsigned int j = 0; j < COLUMNS; j++)
{
Image[i][j] = myline[j];
}
}
asteroid_image_data.close();
}
来自main.cpp的电话只是
Asteroid::LoadImage();
答案 0 :(得分:1)
您必须为静态字符数组添加定义
以下是如何在标题cpp文件中执行此操作:
char Asteroid::Image[3][4] = { {'0','0','0','0'},
{ '0','0','0','0'},
{ '0','0','0','0'}
};
或者
char Asteroid::Image[3][4];
没有像这样的问题,它可以正常工作
Your header file (Header.h):
#pragma once
#include <string>
using namespace std;
class Asteroid
{
private:
static const int ROWS = 3;
static const int COLUMNS = 4;
int row;
int column;
int row_size;
int column_size;
unsigned int ore_value;
static char Image[ROWS][COLUMNS];
public: static void LoadImage();
};
<强> Header.cpp:强>
#include "Header.h"
#include <fstream>
#include <iostream>
using namespace std;
void Asteroid::LoadImage()
{
string myline;
ifstream asteroid_image_data("asteroid.txt");
if (asteroid_image_data.fail())
{
cerr << "Asteroid image file is not available" << endl;
return;
}
for (unsigned int i = 0; i < ROWS; i++)
{
getline(asteroid_image_data, myline, '\n');
if (!asteroid_image_data)
{
cerr << "Asteroid image file is missing some data" << endl;
return;
}
for (unsigned int j = 0; j < COLUMNS; j++)
{
Image[i][j] = myline[j];
}
}
asteroid_image_data.close();
}
char Asteroid::Image[3][4];
主文件(Source.cpp):
#include <iostream>
#include "Header.h""
int main() {
Asteroid::LoadImage();
}