2 rainyclown Rainyclown 于 2017.08.29 16:37 提问

关于c++的对象成员问题

/*定义两个类
坐标类:Coordinate
数据成员:横纵坐标m_iX,m_iY
成员函数:构造,析构,数据封装

线段类:Line
数据成员:点两个 m_coorA,m_coorB
成员函数:构造,析构,数据封装,信息打印*/
/*Coordinate.h文件*/

class Coordinate
{
private:
int m_iX;
int m_iY;
public:
Coordinate(int x,int y);
~Coordinate();
void setX(int x);
void setY(int y);
int getX();
int getY();
};
/*Line.h文件*/
class Line
{
private:
Coordinate m_coorA(int x,int y);
Coordinate m_coorB(int x,int y);
public:
Line(int x1,int y1,int x2,int y2);
~Line();
void setA(int x,int y);
void setB(int x,int y);
void printfInfo();
};

#include
#include
#include "Coordinate.h"
#include "Line.h"
using namespace std;

Coordinate::Coordinate(int x,int y)
{
m_iX=x;
m_iY=y;
cout<<"Coordinate "<<m_iX<<" "<<m_iY<<endl;
}
Coordinate::~Coordinate()
{
cout<<"~Coordinate "<<m_iX<<" "<<m_iY<<endl;
}
void Coordinate::setX(int x)
{
m_iX=x;
}
int Coordinate::getX()
{
return m_iX;
}
void Coordinate::setY(int y)
{
m_iY=y;
}
int Coordinate::getY()
{
return m_iY;
}
Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2)
{
cout<<"Line()"<<endl;
}
Line::~Line()
{
cout<<"~Line"<<endl;
}
void Line::setA(int x1,int y1)
{
m_coorA(x1,y1).setX(x1);
m_coorA(x1,y1).setY(y1);
}
void Line::setB(int x2,int y2)
{
m_coorB(x2,y2).setX(x2);
m_coorB(x2,y2).setY(y2);
}
void Line::printfInfo()
{
cout<<"("<<m_coorA.getX()<<","<<m_coorA.getY()<<")"<<endl;
cout<<"("<<m_coorA.getX()<<","<<m_coorA.getY()<<")"<<endl;
}

int main()
{
Line *p=new Line(1,2,3,4);
p->printfInfo();
delete p;
p=NULL;
system("pause");
return 0;
}
图片说明
//IDE是vs2010,求大佬指点哪里错了,编译总是通不过

6个回答

struggle_saoyears
struggle_saoyears   2017.08.30 08:44
已采纳

你定义的时候不要加参数

Rainyclown
Rainyclown 回复奋斗吧骚年666: 定义对象不能加形参吗,为什么呢?
11 个月之前 回复
XUIcsdn
XUIcsdn   2017.08.30 07:49

private:
Coordinate m_coorA(int x,int y);
Coordinate m_coorB(int x,int y);这里是两个函数声明
Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2)
这里你当成了成员变量
而且也没有Coordinate m_coorA(int x,int y);
Coordinate m_coorB(int x,int y);的定义

XUIcsdn
XUIcsdn 回复XUIcsdn:类只是一个蓝图一样的东西 写成Coordinate m_coorA;就OK了
11 个月之前 回复
XUIcsdn
XUIcsdn 回复Rainyclown: 你是说初始化吧 Coordinate m_coorB(int x,int y);这个是两个函数声明
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 请问定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
Rainyclown
Rainyclown 回复XUIcsdn: 定义对象不能传形参吗?
11 个月之前 回复
xiafei87
xiafei87   2017.08.29 17:11

Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2) ? 语法错误,没看明白什么意思

m294955408
m294955408   2017.08.29 17:19

.cpp 里面没有实现私有方法 m_coorA m_coorB吧

struggle_saoyears
struggle_saoyears   2017.08.29 20:35

构造函数改成这样可以编译通过
Line::Line(int x1,int y1,int x2,int y2)
{
m_coorA(x1,y1);
m_coorB(x2,y2);
cout<<"Line()"<<endl;
}

qq_22203741
qq_22203741   2017.09.05 15:52

定义的时候不要加参数

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC--Format函数
在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。   先看看Format用于转换的格式字符:   %c    
C++学习笔记(8)——继承中的二义性问题和虚基类
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!           例1:定义基类CBase,并定义CBase的派生类CDerived1和CDerived2,在定义CDerived1和CDerived2的派生类CDerived12,观察二义性。         代码
Android Studio 2中通过getDeclaredFields获取到$change成员问题
今天在使用Android Studio2.1时遇到一个问题,代码如下:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)
《面向对象程序设计》第12章在线测试
《面向对象程序设计》第12章在线测试  《面向对象程序设计》第12章在线测试 剩余时间: 59:55  答题须知:1、本卷满分20分。            2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。            3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分)
C++中继承中的同名成员问题
C++中,子类若有与父类同名的成员变量和成员函数,则同名的成员变量相互独立,但同名的子类成员函数重载父类的同名成员函数。举例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
关于C++/JAVA类中的static成员和对象成员的说法正确的是:
A:static成员变量在对象构造时候生成 B: static成员函数在对象成员函数中无法调用 C: 虚成员函数不可能是static成员函数 D: static成员函数不能访问static成员变量 答案:c   解释,(1)类的static成员变量属于该抽象类,需要在类定义时初始化,不可以在对象的构造函数中初始化。(2) static成员函数在对象成员函数中可以调用,同属于
《深入理解c++对象内存模型》读书笔记
this指针的由来,虚函数的编译,多态的本质
静态成员问题
类的静态成员函数只能在类里面声明, 可以在类里面,或者类外面定义。 类的静态成员函数如果声明为public,那么可以用静态成员函数来调用  此时被声明private的构造函数 如果静态成员函数被声明为private,那么就算是  类名::静态成员函数名     也不能调用静态成员函数了。因为是私有的
C/C++对象的序列化
C/C++对象的序列化
关于xmlhttprequest的readystate属性的五个状态
昨天做了一个利用ajax实现页面无刷新的从服务器端获得时间的例子,当时对于xmlhttprequest对象的readystate的后三个状态不是很清楚,想了半天,也不明白!后面在程序的不同地方中用alert(xmlhttp.readystate)查看readystate值的变化,并且请教朋友之后,才弄明白其中的几个问题:创建xmlhttprequest对象之后没有调用open之前readystat