水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
下页
|
尾页
|
1/3
|
转到
主题:一个构造函数的问题
楼主
|
GoGoRoger
|
2022-01-20 11:40:14
|
只看此ID
今天在看优先队列,看官网给的例子,初始化有个奇怪的问题。代码如下:
class mycomparison
{
bool reverse;
public:
mycomparison(const bool& revparam=false)
{reverse=revparam;}
bool operator() (const int& lhs, const int&rhs) const
{
if (reverse) return (lhs>rhs);
else return (lhs<rhs);
}
};
int main ()
{
typedef std::priority_queue<int,std::vector<int>,mycomparison> mypq_type;
mypq_type fifth; //使用默认构造函数
mypq_type fifth (mycomparison(true)); // 有问题
fifith.push(0);
return 0;
}
如果把有问题那一行true去掉,使用默认构造函数,那下一行push那句就编译不过。怎么回事?例子给的使用默认构造函数是
--
修改:GoGoRoger FROM 222.129.50.*
FROM 222.129.50.*
1楼
|
z16166
|
2022-01-20 12:16:56
|
只看此ID
push那行你typo了吧,多了个字母i
--
FROM 114.245.195.*
2楼
|
GoGoRoger
|
2022-01-20 14:05:17
|
只看此ID
去掉也没用,问题不在这里。
【 在 z16166 的大作中提到: 】
: push那行你typo了吧,多了个字母i
: --
:
: ...................
--
FROM 36.112.189.*
3楼
|
z16166
|
2022-01-20 14:12:33
|
只看此ID
我去掉能编译通过的呀。两种构造都能pass。
VS2022,默认用C++14
【 在 GoGoRoger 的大作中提到: 】
: 去掉也没用,问题不在这里。
--
修改:z16166 FROM 114.245.195.*
FROM 114.245.195.*
4楼
|
DoorWay
|
2022-01-20 14:13:50
|
只看此ID
gcc20 clang17 vs2019,编译没有问题。
https://en.cppreference.com/w/cpp/container/priority_queue
人肉读代码,mycomparison(const bool& revparam=false) 构造函数1 bool类型(内置类型)要传const引用? 2 引用还能设置默认参数?
是有特殊的考虑吗,我孤陋寡闻了。
--
FROM 61.185.186.*
5楼
|
allegro
|
2022-01-20 14:22:35
|
只看此ID
唯一能给你的建议就是换编译器。
--
FROM 158.140.1.*
6楼
|
GoGoRoger
|
2022-01-20 15:40:41
|
只看此ID
我用的这里提供的例子和
http://cpp.sh/
的在线编译器,以及在本机win7下mingw的编译器,都有报错。
http://www.cplusplus.com/reference/queue/priority_queue/priority_queue/
@DoorWay @allegro
【 在 z16166 的大作中提到: 】
: 我去掉能编译通过的呀。两种构造都能pass。
: VS2022,默认用C++14
:
--
FROM 222.129.50.*
7楼
|
z16166
|
2022-01-20 15:43:00
|
只看此ID
在线编译器用这个
https://godbolt.org/
【 在 GoGoRoger 的大作中提到: 】
: 我用的这里提供的例子和
http://cpp.sh/
的在线编译器,以及在本机win7下mingw的编译器,都有报错。
:
http://www.cplusplus.com/reference/queue/priority_queue/priority_queue/
: @DoorWay @allegro
: ...................
--
FROM 114.245.195.*
8楼
|
GoGoRoger
|
2022-01-20 15:54:27
|
只看此ID
用你这个编译器貌似也是有问题,不知道你们怎么编译过的。。。
【 在 z16166 的大作中提到: 】
: 在线编译器用这个
:
https://godbolt.org/
:
--
FROM 222.129.50.*
9楼
|
GoGoRoger
|
2022-01-20 15:55:20
|
只看此ID
我在本地,将引用传递改为了值传递,也是编译不过的,不知道你们怎么pass的。。。。
【 在 DoorWay 的大作中提到: 】
: gcc20 clang17 vs2019,编译没有问题。
https://en.cppreference.com/w/cpp/container/priority_queue
: 人肉读代码,mycomparison(const bool& revparam=false) 构造函数1 bool类型(内置类型)要传const引用? 2 引用还能设置默认参数?
: 是有特殊的考虑吗,我孤陋寡闻了。
--
FROM 222.129.50.*
下页
|
尾页
|
1/3
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版