我有一个具有多个功能的结构info
。其中一个函数是info combineInfo
并且接受两个参数(两组信息)。
Info combineInfo(info1, info2);
在main
中,我使用构造函数将所有内容输入到info1和info2中,并且所有内容都很好。但是,从combineInfo(info1, info2)
致电main
时,我正陷入死胡同。我收到消息“错误:combineInfo
未在此范围内声明。”
Info info1; //this is from a constructor that inputs all the values from cin.
Info info2; // ^^
Info3 = combineInfo(info1, info2;
info3.printinfo(); // constructor from class, works fine.
该功能如下所示:
Info Info::combineInfo(Info1, Info2); // sets some values of info1 to info3 and some of info2 to info3.
答案 0 :(得分:1)
该功能应该是:
class Info{
static Info combineInfo(Info info1, Info info2) {
//implementation
}
//the rest of the class implementation!
};
由于它是一个成员函数,它需要范围解析运算符::
。
info3 = Info::combineInfo(info1, info2);
这就是你的称呼方式!
当前实现期望combineInfo
处于全局范围内,而它位于类(成员函数)中 - 因此出错!
答案 1 :(得分:0)
使用 Info :: combineInfo(info1,info2);
您无法直接访问外部的会员功能。你需要使用范围解析运算符::或。访问它。