当你调用函数时,如何传递向量返回类型?

时间:2017-10-03 16:37:40

标签: c++ function vector parameter-passing

我正在使用的IDE:Code :: Blocks 16.01 |我正在使用的编译器:MingGW GCC 6.3.0

标题 当你调用函数时,如何传递向量返回类型?

问题(S): 我试图通过使用pi.size()函数将名为pi的向量的大小作为参数传递给打印函数但是给出了一条错误消息。尝试了不同的方法来纠正它,但无济于事。

错误(S):

构建消息: v4 - Vectors \ main.cpp | 18 |错误:调用重载'print(std :: vector :: size_type)'是不明确的|

的main.cpp

#include <iostream>
#include "../Library/mainLibrary.h"
#include <vector>

using namespace std;

int main()
{

vector<double> pi(5,3.14);
print(pi.size());
cout << pi.size() << endl;
cout << pi.capacity() << endl;
print(pi[0]);
    return 0;
}

mainLibrary.h

#include <iostream>
#include <string>

using namespace std;

#ifndef MAINLIBRARY_H_INCLUDED
#define MAINLIBRARY_H_INCLUDED

void functionName(char input[], int status);

//Prints to screen using overloaded functions
void print(int input);
void print(int*& input);
void print(long input);
void print(double input);
void print(char input);
void print(const char* input);
void print(string input);
void print(string* input);
#endif // MAINLIBRARY_H_INCLUDED

mainLibrary.cpp

#include <iostream> //used for cin, cout
#include "mainLibrary.h"
#include <string> // used for string functions
#include <cstdlib> // used for system function calls

using namespace std;

int functionNameFlag = 0;

void functionName(char input[],int status)
{
    if (functionNameFlag == 1 && status == 1)
    {
        cout << "\n--------------------------------------------------------------------------------\n";
        cout << "Entering function : " << input <<  "\n";
        cout << "--------------------------------------------------------------------------------\n";
    }
    if (functionNameFlag == 1 && status == 2)
    {
        cout << "\n--------------------------------------------------------------------------------\n";
        cout << "Exiting function : " << input <<  "\n";
        cout << "--------------------------------------------------------------------------------\n";
    }
    ;

//    functionName(currentFunctionName, 2);
}

void print(int input)
{
    char currentFunctionName[] = "void print(int input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(int*& input)
{
    char currentFunctionName[] = "void print(int*& input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(long input)
{
    char currentFunctionName[] = "void print(long input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(double input)
{
    char currentFunctionName[] = "void print(double input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(char input)
{
    char currentFunctionName[] = "void print(char input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(const char* input)
{
    char currentFunctionName[] = "void print(const char* input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(string input)
{
    char currentFunctionName[] = "void print(string input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

void print(string* input)
{
    char currentFunctionName[] = "void print(string* input)";
    functionName(currentFunctionName, 1);

    cout << input << endl;

    functionName(currentFunctionName, 2);
}

1 个答案:

答案 0 :(得分:0)

您的计划不知道要拨打哪个print()功能,可以拨打print(int input)print(long input)或...

为了帮助它做出决定,您可以像size()一样投射结果:

print((int)pi.size());

但请注意,如果size()真的很大,那么转换为int就不够了。您可能希望转换为long(感谢Jesper Juhl),或创建另一个print()参数的unsigned int函数。