|
//friends-h 头文件
//注意我取的名字---字面包含友元的含义,但其实整个程序中我并没有使用友元:
class Vector
{
private:
float V[5];
public:
float &elem(int i)
{
return V[i];
}
void show();
};
class Matrix
{
private :
float M[5][5];
public:
Matrix();
float &elem(int i,int j)
{
return M[i][j];
}
};
//friends-c CPP文件
//注意我取的名字---字面包含友元的含义,但其实整个程序中我并没有使用友元:
# include<iostream.h>
# include"friends-h.h"
//定义了一个外部全局函数。
Vector multiply(Matrix &m,Vector &v);
/*定义矩阵引用 向量引用
乘法(矩阵乘法)
返回vector类型值的函数 */
void main()
{
Vector a,s;
Matrix b;
s=multiply(b,s); //没有这句话程序可以正常的通过,正确运行
//但是一加上这句,则出现-------错误:我将错误复制在这里,请大家帮帮忙看究竟是怎么回事!
/*Compiling...
friends-c.cpp
Linking...
friends-c.obj : error LNK2001: unresolved external symbol "class Vector __cdecl multiply(class Matrix &,class Vector &)" (?multiply@@YA?AVVector@@AAVMatrix@@AAV1@@Z)
Debug/一个友元的例子.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.*/
a.show();
}
///////////////////////////////////////////////////
Matrix::Matrix()
{
int i,j;
float x=1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
M[i][j]=x;
x++;
}
}
}
//////////////////////////////////////
Vector muliply(Matrix &m,Vector &v)//全局函数,实现两个矩阵的乘积!
{
Vector r;
for(int i=0; i<5;i++)
{
r.elem(i)=1;
for(int j=0;j<5;j++)
{
r.elem(i)=r.elem(i)+m.elem(i,j)*v.elem(j);
}
}
return r;
}
////////////////////////////////////////////
void Vector::show()
{
int i;
for(i=0;i<5;i++)
{
cout<<V[i]<<endl;
}
return;
} |
|