【发布时间】:2015-10-24 05:49:43
【问题描述】:
我收到了错误:
asteroid.obj:错误 LNK2001:无法解析的外部符号“私有: 静态字符 (* Asteroid::Image)[4]" (?Image@Asteroid@@0PAY03DA) 1>C:\用户\约翰\文档\Visual Studio 2010\Projects\assignment3.1\Debug\assignment3.1.exe:致命错误 LNK1120: 1 个未解决的外部问题
而且我没有看到代码中的问题。我的程序中唯一改变的是我的“Image”和“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();
【问题讨论】:
-
如果你定义图像不是静态的会发生什么?
-
您的链接未显示您的所有代码
-
@MORTAL 我得到::: 1>c:\users\john\documents\visual studio 2010\projects\assignment3.1\assignment3.1\asteroid.cpp(38):错误 C2597:非法引用非静态成员 'Asteroid::Image' 1>c:\users\john\documents\visual studio 2010\projects\assignment3.1\assignment3.1\asteroid.cpp(38):错误 C3867 : 'Asteroid::Image': 函数调用缺少参数列表;使用 '&Asteroid::Image' 创建指向成员 1>c:\users\john\documents\visual studio 2010\projects\assignment3.1\assignment3.1\asteroid.cpp(38) 的指针:错误 C2109:下标需要数组或指针类型
-
很难知道是什么原因造成的。以及如何在没有代码的情况下修复它。如果您的代码很长,您可能需要编写 min-example
标签: c++ visual-studio visual-studio-2010 visual-studio-2012