2016-03-26 3 views
-5

"Fehler C2660: 'storeInitialValues': Funktion dauert nicht 1 Argumente" zeigt sich im Protokoll meines Codes, wenn ich versuche zu bauen. Ich habe einige der hier geposteten Fehler angeschaut und ich denke, es könnte eine Art von Initialisierungsfehler sein, entweder mit/usersize, v, dsize und/oder asize. Ich möchte nur den Fehler beim spezifischen Aufruf von storeInitialValues ​​(usersize, v, dsize, asize) sehen; das ist es. Vielen Dank im Voraus.Hallo, möchte nur wissen, was dieser Fehler bedeutet

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <ctime> 
#include <cstdlib> 
using namespace std; 

struct vec 
{ 

}; 

struct arr 
{ 

}; 

void fillArray(int A[], int size); 
void storeInitialValues(int * & arr, int & asize, int & dsize, vector<int>& v, int & usersize); 


int main() 
{ 
    int usersize, dsize, asize; 
    vector <int> v; 
    int * ptr = new int[10]; 
    cout << "How many values in data structures? Please enter values greater than 20." << endl; 
    cin >> usersize; 
    while (usersize < 21) 
    { 
     cout << "Error, enter values greater than 20!" << endl; 
     cin >> usersize; 
    } 
    cout << "Alright, here are your numbers: " << endl; 
    storeInitialValues(usersize, v, dsize, asize); 

} 

// fillArray stores sequential, unique, integer values into an array and 
// then randomizes their order 
void fillArray(int A[], int size) 
{ 
    srand((int)time(0)); 
    for (int i = 0; i < size; i++) 
    { 
     A[i] = i + 1; 
    } 
    for (int k = size - 1; k>1; k--) 
    { 
     swap(A[k], A[rand() % k]); 
    } 
} 

// storeInitialValues calls fillArray to produce an array of unique randomly 
// organized values and then inserts those values into a dynamically sized 
// array and a vector. 
void storeInitialValues(int * & arr, int & asize, int & dsize, vector<int>& v, int usersize) 
{ 
    int * temp = new int[usersize];   // temporary array for randomized data 
    fillArray(temp, usersize);    // get data 
    for (int i = 0; i < usersize; i++)  // copy data into the dynamic data structures 
    { 
     add(arr, asize, dsize, temp[i]); 
     v.push_back(temp[i]); 
    } 
    delete[] temp;       // clean up temporary pointer 
    temp = NULL; 
} 

void add(int & usersize, int & arr, int & dsize, int & temp[i]) 
{ 

} 

void remove() 
{ 

} 
+0

Sieht so aus, als ob diese Funktion 5 Parameter benötigt, aber Sie rufen sie mit nur 4 Parametern auf. Außerdem haben Sie einen Vektor, aber aus irgendeinem Grund verwenden Sie ihn nicht für die Dinge, für die er verwendet werden sollte. Dinge wie 'int * temp = neuer int [usersize];' könnten einfach durch 'std :: vector temp (usersize) ersetzt werden;' – PaulMcKenzie

+2

storeInitialValues-Funktion nimmt 5 Argumente, die Sie nur übersprungen haben 4.Auch die Funktionsdefinition mit dem ersten Argument als * & sieht falsch aus. Definieren Sie die Eingabe als * und übergeben Sie die Adresse. –

+0

Bitte schreiben Sie, was Ihr Problem auf den Titel spezifisch ist. –

Antwort

0

Nichts über Ihren Aufruf von storeInitialValues ​​stimmt mit der Deklaration überein. Ich denke, Sie könnten verwirrt sein, wenn Sie denken, dass die Namen der Variablen wichtig sind. Das ist nicht der Fall. Sie müssen Variablen übergeben, die dem Typ der Variablen in der Funktionsdeklaration in der richtigen Reihenfolge entsprechen, der Name ist irrelevant.

int * & arr ist eine sehr seltsame Deklaration. int * arr wäre ein Zeiger auf ein int, das Sie als Array behandeln könnten. Was genau wollen Sie mit int * & erreichen? Mixing * und & erfordert, dass Sie sehr vorsichtig mit Ihrer Verwendung sind. Sie verwenden aber auch Vektor, was eine sehr sichere Methode für den Umgang mit Arrays darstellt. Warum nicht einfach Vektoren benutzen? Sie deklarieren und ordnen ptr auch in der Hauptfunktion, aber Sie verwenden es nicht, noch löschen Sie es.