错误 C2782:模板参数 Init 不明确 C++ 调用方法
Error C2782: Template parameter Init is ambigous C++ calling a method
正如标题所说,我在用 C++ 调用我的方法时遇到了问题。我试图自己解决它,但我被卡住了,所以我决定 post 在这里解决这个问题。
所以有人可以告诉我我做错了什么吗?提前致谢!
我的代码:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int counter;
int _tmain(int argc, _TCHAR* argv[])
{
// START_CONFIG
string naam = "XX"; //student naam.
string klas = "XX"; //student klas.
string studentNummer = "XX"; //student nummer.
int min_nummer = 5; //minimale aantal getallen.
int max_nummer = 25; //maximale aantal getallen.
int min_random_nummer = 0; //minimale getal van de random getallen.
int max_random_nummer = 9; //maximale getal van de random getallen.
// END_CONFIG
// stap 1. (Print naam, klas en student nummer)
cout << "Naam: " << naam << "\n";
cout << "Klas: " << klas << "\n";
cout << "Student Nummer: " << studentNummer << "\n";
cout << "\n \n";
// stap 2. (Vraag de gebruiker om het aantal getallen en lees dit)
int aantal;
cout << "Met hoeveel getallen wilt u spelen? \n Kiest u alstublieft een getal tussen " << min_nummer << " en de " << max_nummer << ": \n";
cin >> aantal;
cout << "\n";
while (aantal < min_nummer || aantal > max_nummer) {
cout << "Dit is een foutief getal, kiest u alstublieft een getal tussen de " << min_nummer << " en de "<< max_nummer << ": \n";
cin >> aantal;
cout << "\n";
}
// stap 3 en 4. (Maak een array aan voor de getallen en vul deze met random getallen)
int getallenArray[26];
for (int i = 1; i <= aantal; i++) {
int randomNumber = rand() % max_random_nummer + min_random_nummer;
getallenArray[i] = randomNumber;
}
// stap 5. (Print de getallen uit de array op 1 regel)
for (int i = 1; i <= aantal; i++) {
cout << "nr " << i << " random number " << getallenArray[i] << "\n";
}
// stap 6. (Vraag de gebruiker voor welk getal hij wilt zoeken)
cout << "Voor welke getal wilt u zoeken? /n Uw kunt alleen kiezen uit getallen van "<< min_random_nummer << " t/m " << max_random_nummer << " \n";
int gezochtGetal;
cin >> gezochtGetal;
while (gezochtGetal < min_random_nummer || gezochtGetal > max_random_nummer) {
cout << "Voor welke getal wilt u zoeken? /n Uw kunt alleen kiezen uit getallen van " << min_random_nummer << " t/m " << max_random_nummer << " \n";
cin >> gezochtGetal;
}
// stap 8. (roep deze methode aan en print het aantal uit)
count(gezochtGetal, getallenArray, 26);
cout << "Het getal: " << gezochtGetal << "komt " << counter << "in de array \n";
// stap 9. (bereken welk percenage dit aantal van het totale aantal getallen is.
double percentage = (counter / aantal) * 100;
cout << "dat betekent dat " << percentage << "% van de getallen in het array gelijk is aan " << gezochtGetal << "\n";
}
// stap 7. (maak een methode)
int count(int number, int array[], int length){
for (int i = 1; i < length; i++) {
if (array[i] == number) {
counter++;
return counter;
}
}
}
错误:
Error 1 error C2782: 'iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)' : template parameter '_InIt' is ambiguous c:\users\kaspe_000\documents\visual studio 2013\projects\getal2\getal2\getal2.cpp 59 1 Getal2
count(gezochtGetal, getallenArray, 26);
这不会调用您的 count
函数,因为它尚未声明。
但是,它会尝试调用标准库函数模板 std::count
,因为您已经使用 using
将大部分库转储到全局命名空间中。
函数调用前需要先声明;将定义移动到 main
之前,或者在 main
:
之前添加声明
int count(int number, int array[], int length);
最好把东西放在全局命名空间之外以避免这种冲突。避免 using namespace std;
,理想情况下,将您自己的声明放在命名空间中。
问题是你没有调用你自己的count方法,而是调用了c++标准库中定义的方法:)你应该把你的count方法的声明放在main上面。我会这样做:
#include "stdafx.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int counter;
int count(int number, int array[], int length);
int _tmain(int argc, _TCHAR* argv[])
{
...
正如标题所说,我在用 C++ 调用我的方法时遇到了问题。我试图自己解决它,但我被卡住了,所以我决定 post 在这里解决这个问题。
所以有人可以告诉我我做错了什么吗?提前致谢!
我的代码:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int counter;
int _tmain(int argc, _TCHAR* argv[])
{
// START_CONFIG
string naam = "XX"; //student naam.
string klas = "XX"; //student klas.
string studentNummer = "XX"; //student nummer.
int min_nummer = 5; //minimale aantal getallen.
int max_nummer = 25; //maximale aantal getallen.
int min_random_nummer = 0; //minimale getal van de random getallen.
int max_random_nummer = 9; //maximale getal van de random getallen.
// END_CONFIG
// stap 1. (Print naam, klas en student nummer)
cout << "Naam: " << naam << "\n";
cout << "Klas: " << klas << "\n";
cout << "Student Nummer: " << studentNummer << "\n";
cout << "\n \n";
// stap 2. (Vraag de gebruiker om het aantal getallen en lees dit)
int aantal;
cout << "Met hoeveel getallen wilt u spelen? \n Kiest u alstublieft een getal tussen " << min_nummer << " en de " << max_nummer << ": \n";
cin >> aantal;
cout << "\n";
while (aantal < min_nummer || aantal > max_nummer) {
cout << "Dit is een foutief getal, kiest u alstublieft een getal tussen de " << min_nummer << " en de "<< max_nummer << ": \n";
cin >> aantal;
cout << "\n";
}
// stap 3 en 4. (Maak een array aan voor de getallen en vul deze met random getallen)
int getallenArray[26];
for (int i = 1; i <= aantal; i++) {
int randomNumber = rand() % max_random_nummer + min_random_nummer;
getallenArray[i] = randomNumber;
}
// stap 5. (Print de getallen uit de array op 1 regel)
for (int i = 1; i <= aantal; i++) {
cout << "nr " << i << " random number " << getallenArray[i] << "\n";
}
// stap 6. (Vraag de gebruiker voor welk getal hij wilt zoeken)
cout << "Voor welke getal wilt u zoeken? /n Uw kunt alleen kiezen uit getallen van "<< min_random_nummer << " t/m " << max_random_nummer << " \n";
int gezochtGetal;
cin >> gezochtGetal;
while (gezochtGetal < min_random_nummer || gezochtGetal > max_random_nummer) {
cout << "Voor welke getal wilt u zoeken? /n Uw kunt alleen kiezen uit getallen van " << min_random_nummer << " t/m " << max_random_nummer << " \n";
cin >> gezochtGetal;
}
// stap 8. (roep deze methode aan en print het aantal uit)
count(gezochtGetal, getallenArray, 26);
cout << "Het getal: " << gezochtGetal << "komt " << counter << "in de array \n";
// stap 9. (bereken welk percenage dit aantal van het totale aantal getallen is.
double percentage = (counter / aantal) * 100;
cout << "dat betekent dat " << percentage << "% van de getallen in het array gelijk is aan " << gezochtGetal << "\n";
}
// stap 7. (maak een methode)
int count(int number, int array[], int length){
for (int i = 1; i < length; i++) {
if (array[i] == number) {
counter++;
return counter;
}
}
}
错误:
Error 1 error C2782: 'iterator_traits<_Iter>::difference_type std::count(_InIt,_InIt,const _Ty &)' : template parameter '_InIt' is ambiguous c:\users\kaspe_000\documents\visual studio 2013\projects\getal2\getal2\getal2.cpp 59 1 Getal2
count(gezochtGetal, getallenArray, 26);
这不会调用您的 count
函数,因为它尚未声明。
但是,它会尝试调用标准库函数模板 std::count
,因为您已经使用 using
将大部分库转储到全局命名空间中。
函数调用前需要先声明;将定义移动到 main
之前,或者在 main
:
int count(int number, int array[], int length);
最好把东西放在全局命名空间之外以避免这种冲突。避免 using namespace std;
,理想情况下,将您自己的声明放在命名空间中。
问题是你没有调用你自己的count方法,而是调用了c++标准库中定义的方法:)你应该把你的count方法的声明放在main上面。我会这样做:
#include "stdafx.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int counter;
int count(int number, int array[], int length);
int _tmain(int argc, _TCHAR* argv[])
{
...