无构造函数可以接受源类型,或构造函数重载决策不明确-请大家指教

DongloveRen 2009-04-27 11:39:26

//.h
class Access{
public:
Access(int _weight[],int _value[],int capacity);
private:
int *weight;
int *value;
int capacity;
double profit;
};
//.cpp
Access::Access(int _weight[],int _value[],int _capacity){

weight=_weight;
value=_value;
capacity=_capacity;
profit=0;
}
//main.cpp
int main(){
int _weight[5]={1,2,3,4,5};
int _value[5]={3,2,7,4,1};
int _capacity=7;
Access a=new Access(_weight,_value,_capacity);
return 0;
}
编译时候报错:
error C2440: “初始化”: 无法从“Access *”转换为“Access”
无构造函数可以接受源类型,或构造函数重载决策不明确

请大家帮忙解决一下,本人感激不尽!
...全文
2407 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
timess 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 appleshao 的回复:]
想进来枪点分都没机会.
[/Quote]
呵呵
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 DongloveRen 的回复:]
请问在堆上构造和在栈上构造有什么区别?
如果我在堆上构造,改成指针。当类里面有方法,我应该怎么去调用方法呢?

C/C++ code
class Access{
public:
Access(int _weight[],int _value[],int capacity);
void print();
private:
int *weight;
int *value;
int capacity;
double profit;
};



上面的priny()方法应该怎么调用?
[/Quote]

汗。
a->print();满意不了
栈上的就是a.print();
  • 打赏
  • 举报
回复

class Access{
public:
Access(int _weight[],int _value[],int capacity);
private:
int *weight;
int *value;
int capacity;
double profit;
};
//.cpp
Access::Access(int _weight[],int _value[],int _capacity){

weight=_weight;
value=_value;
capacity=_capacity;
profit=0;
}
//main.cpp
int main(){
int _weight[5]={1,2,3,4,5};
int _value[5]={3,2,7,4,1};
int _capacity=7;
Access *a=new Access(_weight,_value,_capacity); //这里是指针,改下就可以了,怎么犯这么简单的错误呢。
return 0;
}

lingyin55 2009-04-28
  • 打赏
  • 举报
回复
看看这个吧,简单易懂

C++ 对象和对象的定义
http://www.builder.com.cn/2007/1030/590953.shtml
lingyin55 2009-04-28
  • 打赏
  • 举报
回复
直接用指针指向就行了a->priny();

[Quote=引用 5 楼 DongloveRen 的回复:]
请问在堆上构造和在栈上构造有什么区别?
如果我在堆上构造,改成指针。当类里面有方法,我应该怎么去调用方法呢?

C/C++ code
class Access{
public:
Access(int _weight[],int _value[],int capacity);
void print();
private:
int *weight;
int *value;
int capacity;
double profit;
};



上面的priny()方法应该怎么调用?
[/Quote]
arong1234 2009-04-28
  • 打赏
  • 举报
回复
楼主:基本的语法问题应该看教科书,不应该问人,否则你的问题会一个接一个,谁也不知道哪天才能问得完。你这样学习将得到一个网状得知识面,知道得只是一个个节点,而绝大部分知识都是不全面得。很难想想不会用指针访问方法得C++程序员真得仔细看过教科书

[Quote=引用 5 楼 DongloveRen 的回复:]
请问在堆上构造和在栈上构造有什么区别?
如果我在堆上构造,改成指针。当类里面有方法,我应该怎么去调用方法呢?

C/C++ code
class Access{
public:
Access(int _weight[],int _value[],int capacity);
void print();
private:
int *weight;
int *value;
int capacity;
double profit;
};



上面的priny()方法应该怎么调用?
[/Quote]
DongloveRen 2009-04-28
  • 打赏
  • 举报
回复
请问在堆上构造和在栈上构造有什么区别?
如果我在堆上构造,改成指针。当类里面有方法,我应该怎么去调用方法呢?

class Access{
public:
Access(int _weight[],int _value[],int capacity);
void print();
private:
int *weight;
int *value;
int capacity;
double profit;
};

上面的priny()方法应该怎么调用?
appleshao 2009-04-28
  • 打赏
  • 举报
回复
想进来枪点分都没机会.
lingyin55 2009-04-27
  • 打赏
  • 举报
回复
两边的类型不匹配问题

Access *a=new Access(_weight,_value,_capacity);
改为指针就行了。
houzui 2009-04-27
  • 打赏
  • 举报
回复
Access *a=new Access(_weight,_value,_capacity);
cccll9 2009-04-27
  • 打赏
  • 举报
回复
1.去掉new,在栈上构造:
Access a= Access(_weight,_value,_capacity);

[或者]

2.声明为指针,在堆上构造:
Access * a= new Access(_weight,_value,_capacity);
arong1234 2009-04-27
  • 打赏
  • 举报
回复
你这个不是C++语法,而是Java或者C#语法
new的返回值在C++是指针,其左值也必须是指针
因此
Access a=new Access(_weight,_value,_capacity);
要改成
Access* a=new Access(_weight,_value,_capacity);

这个星号表示它是指针

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧