c++ - 没有匹配函数调用 'ANDingOctets'

标签 c++ function syntax-error call

我收到错误消息“由于某种原因没有匹配函数调用‘ANDingOctets’,想帮助我理解为什么吗?这个函数对我来说没问题...(它不是一个完整的功能虽然还没有。)

//
//  ANDingOctets.cpp
//  Egetskojs
//
//  Created by Axel Kennedal on 2014-02-12.
//  Copyright (c) 2014 Axel Kennedal. All rights reserved.
//

#include <iostream>
#include <string>
using namespace std;

string ANDingOctets(string octetIP, string & octetSubNet);

int main(){

    /* EXAMPLE ADDRESSES
    string IPaddress = "192.168.0.12";
    string subNetMask = "255.255.255.0";*/

    string netID = ANDingOctets("10110110","11111000");
    cout << netID << endl;

    return 0;
}

string ANDingOctets(string octetIP, string & octetSubNet){
    int subNetBits;


    for (char index = 0; index < 8; index++) {
        if (octetSubNet.at(index) == '1') {
            subNetBits++;
        }
        else break;
    }
    cout << subNetBits << endl;
    return "test";
}

最佳答案

第二个参数是引用:

string ANDingOctets(string octetIP, string & octetSubNet);
                                           ^

并且您不能通过非常量引用传递临时字符串 - 这是一个稍微古怪的语言规则,旨在防止您不小心修改错误的内容。

如果函数不打算修改参数,则按值(如第一个参数)或常量引用(const string &)传递。

如果打算对其进行修改(似乎并非如此),那么您需要传递一个非临时变量:

string subnet = "11111000";
string netID = ANDingOctets("10110110",subnet);

关于c++ - 没有匹配函数调用 'ANDingOctets',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759791/

相关文章:

c++ - 就地随机选择算法

c++ - Qt + MSVC 2015 + Firebase SDK v1.0.0

c++ - ARM GCC 堆未完全使用

c++ - 单个类实例在 GUI exe 和 dll 中是不同的

c++ - 为什么以下代码中 "C"的值会发生变化?

javascript - JSON 语法错误 : 'unexpected number' or 'JSON.parse: expected ' ,' or ' }' after property value in object'

oracle - 必须声明 pl/sql PLS-00201 标识符

postgresql - 如何获取函数参数列表(这样我就可以删除一个函数)

c - 没有得到想要的输出。有人可以告诉我解决方案吗?

mysql - 使用 3 个表选择查询