default argument given for parameter X of ‘xx函数‘ [-fpermissive]

好久没氵博客了,最近要把业务的numpy函数写成cpp版本,终于碰到一个问题:

建议直接看这篇博客,很详细:
https://blog.csdn.net/kanglongyao/article/details/47184593

VScode 报错:

default argument given for parameter 1 of 'Tensor<float> make_coordmat(std::deque<int>)' [-fpermissive]

终端编译报错:

x.cpp:9:65: error: default argument given for parameter 1 of 'Tensor<float> make_coordmat(std::deque<int>)' [-fpermissive]
 Tensor<float> make_coordmat(std::deque<int> shape = {1, 80, 200}){
                                                                 ^
In file included from x.cpp:5:
./x.h:10:15: note: previous specification in 'Tensor<float> make_coordmat(std::deque<int>)' here
 Tensor<float> make_coordmat(std::deque<int> shape={1, 80, 200});

我的错误代码:
x.cpp 中:

Tensor<float> make_coordmat(std::deque<int> shape = {1, 80, 200}){
    Tensor<float> x_coord;
	......
    return x_coord;
}

x.h中:

Tensor<float> make_coordmat(std::deque<int> shape={1, 80, 200});

查了一下,由于申明和函数体,只能有一个可以写默认值,二者不可都写,所以将其中一个去掉即可,即:

x.cpp 中:

Tensor<float> make_coordmat(std::deque<int> shape){
    Tensor<float> x_coord;
	......
    return x_coord;
}

或者在x.h中:

Tensor<float> make_coordmat(std::deque<int> shape);

去掉那个 ={1, 80, 200} 即可

然而当我在main函数中调用时:

Tensor<float> xxxxx = make_coordmat();

VScode报错:

too few arguments to function 'Tensor<float> make_coordmat(std::deque<int>)'

意思是参数没填够

终端报错:

main.cpp: In function 'int main()':
main.cpp:119:41: error: too few arguments to function 'Tensor<float> make_coordmat(std::deque<int>)'
     Tensor<float> xxxxx = make_coordmat();
                                         ^
In file included from main.cpp:15:
./x.h:9:15: note: declared here
 Tensor<float> make_coordmat(std::deque<int> shape);

所以我只能在申明中写上默认值 ={1, 80, 200} , 而不是函数体中写默认值
这样改之后,可以运行,get√

有参考自:

https://stackoverflow.com/questions/2545720/error-default-argument-given-for-parameter-1
https://blog.csdn.net/kanglongyao/article/details/47184593

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值