调用函数时,如何通过向量返回类型



我正在使用的IDE:code :: blocks 16.01 |编译器我正在使用:minggw gcc 6.3.0

标题:调用函数时如何通过向量返回类型?

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

错误(S):

构建消息:v4- vectors main.cpp | 18 |错误:OFLOADED'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);
}

您的程序不知道要调用哪个print()函数,它可以调用print(int input)print(long input)或...

为了帮助其决定,您可以从size()施放结果:

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

请注意,如果size()确实很大,那么将int投射不足。您可能想将其施放到long(感谢Jesper Juhl),或创建另一个print()函数,该函数带有unsigned int参数。

最新更新