Ich versuche gerade, "variadic functions" herunterzufahren und versuche gerade, 4 Namen in einem String-Vektor zu laden und dann auszudrucken. Wenn ich das mit 'int' tue und Zahlen benutze, funktioniert es gut, aber wenn ich einen String-Vektor verwende, bekomme ich den Fehler.Fehler "Vektor-Index außerhalb des Bereichs"
#include "stdafx.h"
#include<cstdio>
#include<cstdarg>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int count;
vector<string> namesVector;
void names(int count, ...)
{
va_list namesList;
int i; // for loop
va_start(namesList, count);
for (i = 0; i < count; i++)
{
string currentElement;
currentElement = va_arg(namesList, string);
namesVector[i] = currentElement;
}
va_end(namesList);
}
int main()
{
int nameCount = 4;
names(nameCount,"jon", "maggie", "joan", "alfred");
for (int i = 0; i < nameCount; i++)
{
cout << "Name at element " << i << " is: " << namesVector[i] << endl;
}
}
Es klingt wie Sie lernen müssen, können, wie ein Debugger zu verwenden, durch den Code zu treten. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** –
Ich schlage vor, Sie verbringen einige Zeit [lesen wie »std :: vector« funktioniert (http://en.cppreference.com/w/cpp/container/vector). – caps