含有内联函数的v编译不通过的原因

主函数
#include
#include"Bit_Point2D.h"
#include"Bit_Circle2D.h"
#include"string.h"
using namespace std;
void main()
{
double D;
double E;
double F;
double radius;
cout<<“输入D”<<endl;
cin>>D;
cout<<“输入E”<<endl;
cin>>E;
cout<<“输入F”<<endl;
cin>>F;
Bit_Circle2D c1=Bit_Circle2D(D,E,F );
Bit_Point2D CentreP=c1.Get_CentreP();
c1.Get_Radius();
double x=CentreP.Get_x();
double y=CentreP.Get_y();
cout<<“圆心x坐标为”<<x<<“圆心y坐标为”<<y<<endl;
}
头文件
//#pragma once
/********************************************************************
created: 2016/08/20

file base: BIT_DAMAGESIMULATION_API
file ext: h
author: Xuyuxin

purpose: 2维点圆数据结构

*********************************************************************/
#ifndef BITCIRCLE2D_H__
#define BITCIRCLE2D_H__
#include
//#include “Bit_GeometrySupport_Global.h”
#include “Bit_Point2D.h”

//class BITGEOMETRYSUPPORT_API Bit_Circle2D
class Bit_Circle2D
{
public:
// 空函数
Bit_Circle2D(void);
// 构造初始化函数
Bit_Circle2D( Bit_Point2D CentreP , double Radius );
// 构造初始化函数根据圆的标准方程X2+y2+Dx+Ey+F=0的圆心点和共和半径
Bit_Circle2D( double D , double E , double F );

//拷贝构造函数
Bit_Circle2D( const Bit_Circle2D &cC2D );
//重载等号
Bit_Circle2D & operator = ( const Bit_Circle2D & cC2D );
//重载等于
bool operator == ( const Bit_Circle2D & cC2D ) const;
//重载不等于
bool operator != ( const Bit_Circle2D & cC2D ) const;

~Bit_Circle2D(void);

// 初始化设置
void Set_Initial( const Bit_Point2D& CentreP , const double& Radius );
// 得到是否定义
inline bool Get_IfDefinition( void ) const;
// 得到圆心点
inline Bit_Point2D Get_CentreP( void ) const;
// 得到直径
inline double Get_Radius( void ) const;
// 得到标准化方程的D
inline double Get_StandardD( void ) const;
// 得到标准化方程的E
inline double Get_StandardE( void ) const;
// 得到标准化方程的F
inline double Get_StandardF( void ) const;
// 判断点是否在圆上
inline bool JudgePointIfInCircle( const Bit_Point2D & P )const;

private:
// 圆心点
Bit_Point2D CentreP_;
// 半径
double Radius_;
// 圆是否定义
bool IfDefinition_;
protected:
// 错误信息
std::string strErrorInfo;
};
/*
Bit_Circle2D::Bit_Circle2D(void)
{
IfDefinition_ = false;
}
// 构造初始化函数
Bit_Circle2D::Bit_Circle2D( Bit_Point2D CentreP , double Radius )
{
if( Radius < 0 || Radius == 0 )
{
strErrorInfo = “输入直径小于等于0,有误”;
}
else
{
Radius_ = Radius;
CentreP_ = CentreP;
IfDefinition_ = true;
}

}
// 构造初始化函数
Bit_Circle2D::Bit_Circle2D( double D , double E , double F )
{
if( ( D * D + E * E - 4 * F ) < 1e-8 || ( D * D + E * E - 4 * F ) == 0 )
{
strErrorInfo = “输入参数有误”;
IfDefinition_ = false;
}
else
{
Radius_ = ( D * D + E * E - 4 * F ) / 4.0;
CentreP_.Set_x( D / 2 );
CentreP_.Set_y( E / 2 );
IfDefinition_ = true;
}

}

//拷贝构造函数
Bit_Circle2D::Bit_Circle2D( const Bit_Circle2D &cC2D )
{
if (this !=& cC2D )
{
//单位制
Radius_ = cC2D.Radius_;
CentreP_ = cC2D.CentreP_;
IfDefinition_ = cC2D.IfDefinition_;
}
}

//重载等号
Bit_Circle2D & Bit_Circle2D::operator=( const Bit_Circle2D & cC2D )
{
if (this !=& cC2D )
{
//单位制
Radius_ = cC2D.Radius_;
CentreP_ = cC2D.CentreP_;
IfDefinition_ = cC2D.IfDefinition_;
}
return *this;
}

//重载等于
bool Bit_Circle2D::operator==( const Bit_Circle2D & cC2D ) const
{
if ( ( Radius_ == cC2D.Radius_ ) && ( CentreP_ == cC2D.CentreP_ )
&&(IfDefinition_ == cC2D.IfDefinition_))
{
return true;
}
else
{
return false;
}
}

//重载不等于
bool Bit_Circle2D::operator!=( const Bit_Circle2D & cC2D ) const
{
if ( ( Radius_ == cC2D.Radius_ ) && ( CentreP_ == cC2D.CentreP_ )
&& (IfDefinition_ == cC2D.IfDefinition_) )
{
return false;
}
else
{
return true;
}
}

Bit_Circle2D::~Bit_Circle2D(void)
{
}
// 初始化设置
void Bit_Circle2D::Set_Initial( const Bit_Point2D& CentreP , const double& Radius )
{
if( Radius < 0 || Radius == 0 )
{
strErrorInfo = “输入直径小于等于0,有误”;
}
Radius_ = Radius;
CentreP_ = CentreP;
IfDefinition_ = true;
}
// 得到是否定义
inline bool Bit_Circle2D::Get_IfDefinition( void ) const
{
return IfDefinition_;
}
// 得到圆心点
inline Bit_Point2D Bit_Circle2D::Get_CentreP( void ) const
{
//if( IfDefinition_ == false )
//{
// strErrorInfo = “圆没有定义”;
//}
return CentreP_;
}
// 得到直径
inline double Bit_Circle2D::Get_Radius( void ) const
{
/*if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
return Radius_;
}
// 得到标准化方程的D
inline double Bit_Circle2D::Get_StandardD( void ) const
{
/*if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
return -2 * CentreP_.Get_x();
}
// 得到标准化方程的E
inline double Bit_Circle2D::Get_StandardE( void ) const
{
//if( IfDefinition_ == false )
//{
// strErrorInfo = “圆没有定义”;
//}
return -2 * CentreP_.Get_y();
}
// 得到标准化方程的F
inline double Bit_Circle2D::Get_StandardF( void ) const
{
/*if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
return CentreP_.Get_x() * CentreP_.Get_x() + CentreP_.Get_y() * CentreP_.Get_y()
- Radius_ * Radius_;
}
// 判断点是否在圆上
inline bool Bit_Circle2D::JudgePointIfInCircle( const Bit_Point2D & P ) const
{
/*if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
double Temp = pow( ( P.Get_x() - CentreP_.Get_x() ) , 2 )
+ pow( ( P.Get_y() - CentreP_.Get_y() ) , 2 );

if( abs( Temp - Radius_ * Radius_ ) < 1e-8)
	return true;
else
	return false;

}*/
#endif
源文件:
#include “Bit_Circle2D.h”

Bit_Circle2D::Bit_Circle2D(void)
{
IfDefinition_ = false;
}
// 构造初始化函数
Bit_Circle2D::Bit_Circle2D( Bit_Point2D CentreP , double Radius )
{
if( Radius < 0 || Radius == 0 )
{
strErrorInfo = “输入直径小于等于0,有误”;
}
else
{
Radius_ = Radius;
CentreP_ = CentreP;
IfDefinition_ = true;
}

}
// 构造初始化函数
Bit_Circle2D::Bit_Circle2D( double D , double E , double F )
{
if( ( D * D + E * E - 4 * F ) < 1e-8 || ( D * D + E * E - 4 * F ) == 0 )
{
strErrorInfo = “输入参数有误”;
IfDefinition_ = false;
}
else
{
Radius_ = ( D * D + E * E - 4 * F ) / 4.0;
CentreP_.Set_x( D / 2 );
CentreP_.Set_y( E / 2 );
IfDefinition_ = true;
}

}

//拷贝构造函数
Bit_Circle2D::Bit_Circle2D( const Bit_Circle2D &cC2D )
{
if (this !=& cC2D )
{
//单位制
Radius_ = cC2D.Radius_;
CentreP_ = cC2D.CentreP_;
IfDefinition_ = cC2D.IfDefinition_;
}
}

//重载等号
Bit_Circle2D & Bit_Circle2D::operator=( const Bit_Circle2D & cC2D )
{
if (this !=& cC2D )
{
//单位制
Radius_ = cC2D.Radius_;
CentreP_ = cC2D.CentreP_;
IfDefinition_ = cC2D.IfDefinition_;
}
return *this;
}

//重载等于
bool Bit_Circle2D::operator==( const Bit_Circle2D & cC2D ) const
{
if ( ( Radius_ == cC2D.Radius_ ) && ( CentreP_ == cC2D.CentreP_ )
&&(IfDefinition_ == cC2D.IfDefinition_))
{
return true;
}
else
{
return false;
}
}

//重载不等于
bool Bit_Circle2D::operator!=( const Bit_Circle2D & cC2D ) const
{
if ( ( Radius_ == cC2D.Radius_ ) && ( CentreP_ == cC2D.CentreP_ )
&& (IfDefinition_ == cC2D.IfDefinition_) )
{
return false;
}
else
{
return true;
}
}

Bit_Circle2D::~Bit_Circle2D(void)
{
}
// 初始化设置
void Bit_Circle2D::Set_Initial( const Bit_Point2D& CentreP , const double& Radius )
{
if( Radius < 0 || Radius == 0 )
{
strErrorInfo = “输入直径小于等于0,有误”;
}
Radius_ = Radius;
CentreP_ = CentreP;
IfDefinition_ = true;
}
// 得到是否定义
inline bool Bit_Circle2D::Get_IfDefinition( void ) const
{
return IfDefinition_;
}
// 得到圆心点
inline Bit_Point2D Bit_Circle2D::Get_CentreP( void ) const
{
//if( IfDefinition_ == false )
//{
// strErrorInfo = “圆没有定义”;
//}
return CentreP_;
}
// 得到直径
inline double Bit_Circle2D::Get_Radius( void ) const
{
/if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
/
return Radius_;
}
// 得到标准化方程的D
inline double Bit_Circle2D::Get_StandardD( void ) const
{
/if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
/
return -2 * CentreP_.Get_x();
}
// 得到标准化方程的E
inline double Bit_Circle2D::Get_StandardE( void ) const
{
//if( IfDefinition_ == false )
//{
// strErrorInfo = “圆没有定义”;
//}
return -2 * CentreP_.Get_y();
}
// 得到标准化方程的F
inline double Bit_Circle2D::Get_StandardF( void ) const
{
/if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
/
return CentreP_.Get_x() * CentreP_.Get_x() + CentreP_.Get_y() * CentreP_.Get_y()
- Radius_ * Radius_;
}
// 判断点是否在圆上
inline bool Bit_Circle2D::JudgePointIfInCircle( const Bit_Point2D & P ) const
{
/if( IfDefinition_ == false )
{
strErrorInfo = “圆没有定义”;
}
/
double Temp = pow( ( P.Get_x() - CentreP_.Get_x() ) , 2 )
+ pow( ( P.Get_y() - CentreP_.Get_y() ) , 2 );

if( abs( Temp - Radius_ * Radius_ ) < 1e-8)
	return true;
else
	return false;

}

在运行crtl+F5时,多次报错,错误形式如下:
ttt.obj : error LNK2019: 无法解析的外部符号 "public: double __thiscall Bit_Circle2D::Get_Radius(void)const " (?Get_Radius@Bit_Circle2D@@QBENXZ),该符号在函数 _main 中被引用
1>ttt.obj : error LNK2019: 无法解析的外部符号 "public: class Bit_Point2D __thiscall Bit_Circle2D::Get_CentreP(void)const " (?Get_CentreP@Bit_Circle2D@@QBE?AVBit_Point2D@@XZ),该符号在函数 _main 中被引用
1>C:\Users\liu\Documents\Visual Studio 2010\Projects\cankao\Debug\cankao.exe : fatal error LNK1120: 2 个无法解析的外部命令
后经网上查找资料,才知道:内联函数定义时,要放在头文件内,所以要么删去函数的incline关键字,要么把函数实现放在头文件内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值