我正在使用的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);
}
答案 0 :(得分:0)
您的计划不知道要拨打哪个print()
功能,可以拨打print(int input)
或print(long input)
或...
为了帮助它做出决定,您可以像size()
一样投射结果:
print((int)pi.size());
但请注意,如果size()
真的很大,那么转换为int
就不够了。您可能希望转换为long
(感谢Jesper Juhl),或创建另一个print()
参数的unsigned int
函数。