2015-09-09 3 views
-3

У меня очень странная ошибка с C++, которую я не могу разглядеть. Я инициализируюсь сотня массивов и раньше, но по какой-то причине, когда я делаю массив двойников:Недопустимые типы для индекса массива

double trap[]={0.0,0.0,0.0,0.0,0.0,0.0}; 

А затем попытаться сделать НИЧЕГО с конкретными элементами этого массива, а именно:

cout << trap[3] << endl; 

Я получаю странную ошибку:

compare.cpp:43:20: error: invalid types ‘double[int]’ for array subscript 
cout << trap[3] << endl; 

Который я вообще не понимаю. Почему индекс (целое число) имеет какое-либо отношение к типу значения, содержащегося в этом элементе (double)?

EDIT: Вот мой полный код, который дает ошибку:

#include <stdio.h> 
#include <math.h> 
#include <cmath> 
#include <iostream> 
#include <iomanip> 

using namespace std; 

const double Xmax[]={2.0,10.0,20.0,40.0, 80.0, 160.0}; 

double f (double x) { 
    return (exp(-x));    
} 

int main() { 
    FILE *Trap = fopen("trap.dat","w"); 

    double trap[]={0.0,0.0,0.0,0.0,0.0,0.0}, 

cout << gaus2_old[3] << endl; 
//...do other stuff with trap[] and Xmax[]... 
} 

Где все в строке «делать другие вещи с ловушкой [] и Xmax []» только остальная часть моего кода, где каждый экземпляр ловушки [] и Xmax [] дает ту же ошибку:

compare.cpp:43:20: error: invalid types ‘double[int]’ for array 
+0

_ «Вопросы, ищущие отладку помощи (» почему не этот код работает? ") Должны включать в себя желаемое поведение, конкретную проблему или ошибку и короткий код, необходимый для воспроизведения его в вопросе сам. Вопросы без четкого описания проблемы не полезны другим читателям. См.: [** Как создать минимальный, полный и проверенный пример **] (http://stackoverflow.com/help/mcve). "_ –

+2

Ваш пример [работает правильно] (https://ideone.com/JJq17I). – alain

+0

Эти две строки компилируются отлично. Ошибка должна быть где-то еще. Вы можете показать нам большую часть вашего кода? –

ответ

1

я запускаю этот код в VS и он печатает 0 в консоли.

// testcpp.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 

using namespace std; 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    double trap[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; 
    cout << trap[3] << endl; 

    return 0; 
} 

На Update: Я согласен с https://stackoverflow.com/users/5289220/sukces-elektroniki, изменение

double trap[]={0.0,0.0,0.0,0.0,0.0,0.0}, 

в

double trap[]={0.0,0.0,0.0,0.0,0.0,0.0}; 

И

изменения

cout << gaus2_old[3] << endl; 

в

cout << trap[3] << endl; 
+0

Как только вопрос выясняется, этот ответ может быть «устаревшим» –

+0

Извините! Я добавил свой «полный» код выше в редактировании.Я пробовал компилировать это на нескольких машинах, и я все равно всегда получаю ту же ошибку каждый раз, когда я пытаюсь вызвать какой-либо конкретный элемент в массиве. – khfrekek

Смежные вопросы