会C++编MFC的高手请进。

(1)、构造一个分数类CVector3D,它有三个浮点型数据成员,分别用来表示该向量的x、y、和z分量。类的构造函数在没有指定初始值时,将类的三个成员变量初始化为0.0。... (1)、构造一个分数类CVector3D,它有三个浮点型数据成员,分别用来表示该向量的x、y、和z分量。类的构造函数在没有指定初始值时,将类的三个成员变量初始化为0.0。类能够按照下面的公式完成向量加、减、数乘和内积运算。
(a) 向量相加:(x1, y1, z1) + (x2, y2, z2) = (x1+x2, y1+y2, z1+z2)
(b) 向量相减:(x1, y1, z1) - (x2, y2, z2) = (x1-x2, y1-y2, z1-z2)
(c) 向量数乘:k(x1, y1, z1) = (kx1, ky1, kz1)
(d) 向量内积:(x1, y1, z1) * (x2, y2, z2) = x1x2+y1y2+z1z2
(2)、将类CVector3D加入到一个对话框程序中,并测试该类的每一个成员函数及友元函数。

麻烦帮忙编一下,最好告诉我具体步骤。谢谢。悬赏分不多,答案满意还有分加。
展开
 我来答
vex123
2008-03-07 · TA获得超过1581个赞
知道小有建树答主
回答量:932
采纳率:0%
帮助的人:261万
展开全部
C++是一种编程语言,用C++语言编写的程序可以用C++编译器来编译成可运行的执行程序。C++编译器有很多。

VC是一个编程工具软件,它集成了C++编译器和编辑环境,全称叫做:Virtual C++,即“可视化的C++编程工具”。

MFC是一个微软提供的基础类库,它封装了WINDOWS里的API,对于开发者来说,用MFC会比直接用Windows的API来得容易一些。(所有Windows应用程序都得通过使用Windows API来实现)MFC中还提供了很好的应用程序框架,最突出的就是"文档-视"结构。

C++语言与操作系统环境是没有关系的,由于Windows操作系统太过普及,所以一般大家都在开发基于Windows操作系统的应用程序。

目前用于开发Windows应用程序的编程语言、编程环境很多,而用C++开发程序的编程环境中,VC是比较好用的,尤其是开发Windows应用程序,再加上VC对MFC应用开发支持的最好(都是微软的产品),所以,现在相当多数的人在VC上用MFC来开发Windows应用程序。

你提到的“windows编程和windows API编程”还是有一点不同,前者比较泛指开发Windows应用程序,而后者比较强调直接调用Windows API进行编程,前者包括后者,现在直接用Windows API编程的比较少,而是用封装了API的类库来开发的比较多,比如MFC。

总之,VC,C++,MFC之间是没有什么直接关系,要说有的话,就是:
1。VC支持C++编程语言,也支持用MFC开发Windows应用程序
2。MFC本身就是C++类库

另外:
1。VC也可以开发C程序,可以完全不用到MFC
2。VC可以用C或者C++开发非Windows程序,比如Dos程序等

如果你想用C++编Windows程序的话,建议你先把C++学好,然后试着在VC环境中学习用MFC框架开发Windows程序,可以参考《Virtual C++技术内幕》(现在已经搞不清到多少版了),当然,你手上还得必备一本MFC参考手册,随时可以查找类以及类成员函数的说明(有MSDN也可以)。

刚开始学不要太紧张,也不要太急于求成,循序渐进,最好先把一些概念搞清楚,还有就是操作系统的消息机制一定要多下功夫去理解,有了这些基础,再实践起来就会容易和轻松的多。

好了,先写这些,希望能够对你有所帮助。

***********************************************************

补充回答:

如果你现在想学windows API 编程的话,用VC也是合适的,创建工程的时候选择Win32 App,并且不使用MFC。

Windows API编程肯定需要使用一种编程语言的,选择C或者C++都是不错的选择,只要在程序里不使用MFC,而是直接调用Windows 提供的最基本的API,都可以叫做Window API编程的。

至于选择开发环境,VC还是相当不错的(虽然稍微复杂一点),可以利用VC为你生成应用程序框架,可以大大提高开发效率,也可以自己从WinMain()开始一点一点地写(即应用程序的唯一入口点,相对而言,非Windows程序是以main()开始的),就跟写DOS程序一样。

总之,Windows API编程并不复杂,你可以看看几个简单的例子,然后慢慢的增加代码和应用的复杂度。如果你用VC,就让VC帮你生成一个最简单的应用程序框架,你一句代码也不用写,就可以运行了,然后你再仔细看看VC帮你生成的源代码,你就可以开始在这个基础上慢慢的加些新的代码进去了。

编程的时候,在VC缺省的情况下是默认为C++的,至于你用C还是C++就随你了,一般人都是混着用的,C++完全包含了C,现在一般区分C和C++,无非就是简单的看看是否使用了类,是否使用了引用(&)等等。。。建议你就直接用C++,先掌握基本的C语法和概念。

不知道你现在的底子如何,你可以同步先学以下一个方面的内容:
1。编程语言
2。熟悉Windows API,理解Windows的消息机制
3。VC开发环境

好了,现在就可以做的,就是:
1。安装一个VC
2。试着摸一摸VC,并用VC为你创建一个最简单的应用程序框架(不要使用MFC)
3。一手拿本编程语言的书,一手拿本Windows API速查手册。
4。开始吧,还犹豫什么!编译,运行
匿名用户
2008-03-07
展开全部
既然是说向量,这个不是分数类吧,
#include <cmath>

class CVector3D
{
public:

float x;
float y;
float z;

CVector3D(void)
{
x = 0.0f;
y = 0.0f;
z = 0.0f;
}

CVector3D(float x_, float y_, float z_);
void set(float x_, float y_, float z_);
float length(void);
void normalize(void);

// Static utility methods
static float distance(const CVector3D &v1, const CVector3D &v2);
static float dotProduct(const CVector3D &v1, const CVector3D &v2 );
static CVector3D crossProduct(const CVector3D &v1, const CVector3D &v2);

// Operators...
CVector3D operator + (const CVector3D &other);
CVector3D operator - (const CVector3D &other);
CVector3D operator * (const CVector3D &other);
CVector3D operator / (const CVector3D &other);

CVector3D operator * (const float scalar);
friend CVector3D operator * (const float scalar, const CVector3D &other);

CVector3D& operator = (const CVector3D &other);
CVector3D& operator += (const CVector3D &other);
CVector3D& operator -= (const CVector3D &other);

CVector3D operator + (void) const;
CVector3D operator - (void) const;
};

CVector3D::CVector3D( float x_, float y_, float z_ )
{
x = x_;
y = y_;
z = z_;
}

void CVector3D::set( float x_, float y_, float z_ )
{
x = x_;
y = y_;
z = z_;
}

float CVector3D::length( void )
{
return( (float)sqrt( x * x + y * y + z * z ) );
}

void CVector3D::normalize( void )
{
float fLength = length();

x = x / fLength;
y = y / fLength;
z = z / fLength;
}

// Static utility methods...

static float distance( const CVector3D &v1, const CVector3D &v2 )
{
float dx = v1.x - v2.x;
float dy = v1.y - v2.y;
float dz = v1.z - v2.z;

return (float)sqrt( dx * dx + dy * dy + dz * dz );
}

static float dotProduct( const CVector3D &v1, const CVector3D &v2 )
{
return( v1.x * v2.x + v1.y * v2.y + v1.z * v2.z );
}

static CVector3D crossProduct( const CVector3D &v1, const CVector3D &v2 )
{
CVector3D vCrossProduct;

vCrossProduct.x = v1.y * v2.z - v1.z * v2.y;
vCrossProduct.y = v1.z * v2.x - v1.x * v2.z;
vCrossProduct.z = v1.x * v2.y - v1.y * v2.x;

return vCrossProduct;
}

// Operators...

CVector3D CVector3D::operator + ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x + other.x;
vResult.y = y + other.y;
vResult.z = z + other.z;

return vResult;
}

CVector3D CVector3D::operator + ( void ) const
{
return *this;
}

CVector3D CVector3D::operator - ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x - other.x;
vResult.y = y - other.y;
vResult.z = z - other.z;

return vResult;
}

CVector3D CVector3D::operator - ( void ) const
{
CVector3D vResult(-x, -y, -z);

return vResult;
}

CVector3D CVector3D::operator * ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x * other.x;
vResult.y = y * other.y;
vResult.z = z * other.z;

return vResult;
}

CVector3D CVector3D::operator * ( const float scalar )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x * scalar;
vResult.y = y * scalar;
vResult.z = z * scalar;

return vResult;
}

CVector3D operator * ( const float scalar, const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = other.x * scalar;
vResult.y = other.y * scalar;
vResult.z = other.z * scalar;

return vResult;
}

CVector3D CVector3D::operator / ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x / other.x;
vResult.y = y / other.y;
vResult.z = z / other.z;

return vResult;
}

CVector3D& CVector3D::operator = ( const CVector3D &other )
{
x = other.x;
y = other.y;
z = other.z;

return *this;
}

CVector3D& CVector3D::operator += ( const CVector3D &other )
{
x += other.x;
y += other.y;
z += other.z;

return *this;
}

CVector3D& CVector3D::operator -= ( const CVector3D &other )
{
x -= other.x;
y -= other.y;
z -= other.z;

return *this;
}

参考资料: 这是你要的吧

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
47452984
2008-03-07 · TA获得超过131个赞
知道答主
回答量:419
采纳率:0%
帮助的人:67.5万
展开全部
#include <cmath>

class CVector3D
{
public:

float x;
float y;
float z;

CVector3D(void)
{
x = 0.0f;
y = 0.0f;
z = 0.0f;
}

CVector3D(float x_, float y_, float z_);
void set(float x_, float y_, float z_);
float length(void);
void normalize(void);

// Static utility methods
static float distance(const CVector3D &v1, const CVector3D &v2);
static float dotProduct(const CVector3D &v1, const CVector3D &v2 );
static CVector3D crossProduct(const CVector3D &v1, const CVector3D &v2);

// Operators...
CVector3D operator + (const CVector3D &other);
CVector3D operator - (const CVector3D &other);
CVector3D operator * (const CVector3D &other);
CVector3D operator / (const CVector3D &other);

CVector3D operator * (const float scalar);
friend CVector3D operator * (const float scalar, const CVector3D &other);

CVector3D& operator = (const CVector3D &other);
CVector3D& operator += (const CVector3D &other);
CVector3D& operator -= (const CVector3D &other);

CVector3D operator + (void) const;
CVector3D operator - (void) const;
};

CVector3D::CVector3D( float x_, float y_, float z_ )
{
x = x_;
y = y_;
z = z_;
}

void CVector3D::set( float x_, float y_, float z_ )
{
x = x_;
y = y_;
z = z_;
}

float CVector3D::length( void )
{
return( (float)sqrt( x * x + y * y + z * z ) );
}

void CVector3D::normalize( void )
{
float fLength = length();

x = x / fLength;
y = y / fLength;
z = z / fLength;
}

// Static utility methods...

static float distance( const CVector3D &v1, const CVector3D &v2 )
{
float dx = v1.x - v2.x;
float dy = v1.y - v2.y;
float dz = v1.z - v2.z;

return (float)sqrt( dx * dx + dy * dy + dz * dz );
}

static float dotProduct( const CVector3D &v1, const CVector3D &v2 )
{
return( v1.x * v2.x + v1.y * v2.y + v1.z * v2.z );
}

static CVector3D crossProduct( const CVector3D &v1, const CVector3D &v2 )
{
CVector3D vCrossProduct;

vCrossProduct.x = v1.y * v2.z - v1.z * v2.y;
vCrossProduct.y = v1.z * v2.x - v1.x * v2.z;
vCrossProduct.z = v1.x * v2.y - v1.y * v2.x;

return vCrossProduct;
}

// Operators...

CVector3D CVector3D::operator + ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x + other.x;
vResult.y = y + other.y;
vResult.z = z + other.z;

return vResult;
}

CVector3D CVector3D::operator + ( void ) const
{
return *this;
}

CVector3D CVector3D::operator - ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x - other.x;
vResult.y = y - other.y;
vResult.z = z - other.z;

return vResult;
}

CVector3D CVector3D::operator - ( void ) const
{
CVector3D vResult(-x, -y, -z);

return vResult;
}

CVector3D CVector3D::operator * ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x * other.x;
vResult.y = y * other.y;
vResult.z = z * other.z;

return vResult;
}

CVector3D CVector3D::operator * ( const float scalar )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x * scalar;
vResult.y = y * scalar;
vResult.z = z * scalar;

return vResult;
}

CVector3D operator * ( const float scalar, const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = other.x * scalar;
vResult.y = other.y * scalar;
vResult.z = other.z * scalar;

return vResult;
}

CVector3D CVector3D::operator / ( const CVector3D &other )
{
CVector3D vResult(0.0f, 0.0f, 0.0f);

vResult.x = x / other.x;
vResult.y = y / other.y;
vResult.z = z / other.z;

return vResult;
}

CVector3D& CVector3D::operator = ( const CVector3D &other )
{
x = other.x;
y = other.y;
z = other.z;

return *this;
}

CVector3D& CVector3D::operator += ( const CVector3D &other )
{
x += other.x;
y += other.y;
z += other.z;

return *this;
}

CVector3D& CVector3D::operator -= ( const CVector3D &other )
{
x -= other.x;
y -= other.y;
z -= other.z;

return *this;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式