2016-10-30 3 views
0

Alle meine Fehler sind genau das gleiche und ich kann nicht herausfinden, warum. Jeder Rat wäre hilfreich. Ich muss prozedurales C++ verwenden."Bezieht sich nicht auf Wert" Fehler in C++ prozedurale

#include <stdio.h> 

typedef struct Elem { 
    float Element; 
}ELEM; 

typedef struct Vector { 
    unsigned int size = 0; 
    Elem *numbers[]; 
}VECTOR; 

// print_vec: 
// prints the vector array if it isn't NULL 
// in: 
// RefToVector - single dimensional array of Elem's 
// Out: 
// Returns true if the array isn't NULL and it has something to print, NULL if otherwise 
bool print_vec(Vector *numbers) { 
    if (numbers != NULL) { 
     printf("%f", numbers); 
     return true; 
    } 
    else { 
     return NULL; 
    } 
} 

// *alloc_vec 
// Allocates an empty vector array 
// In: 
// Nothing 
// Out: 
// A newly allocated vector array 

Vector *alloc_vec() { 
    Vector *numbers = new Vector; 
return numbers; 
} 

// dealloc_vec 
// deallocates array 
// In: 
// an allocated array 
// out: 
// Return: True if successfull, NULL if not 

void dealloc_vec(Vector *numbers) { 
    delete Vector *numbers; 
} 

// extend_vec 
// Extends the vector by one element in size 
// In: 
// Vector array of x elements 
// Out: 
// Vector array of x + 1 elements 
// Return: 
// A pointer to the new vector 

Vector *extend_vec(Vector *numbers, Elem) { 
    Vector *bigger = alloc_vec(); 
    bigger->size = numbers->size + 1; // set the size of the new vector to the size of the old plus one more element 
    for (int i = 0; i <= numbers->size; i++) { 
     bigger[i] = numbers[i]; // step through the vectors and copy the values 
    } 
    bigger[bigger->size-1] = Elem; // set last place in the new vector to the new element 
    return bigger; 
} 


// scalar_plus 
// Steps through the vector elements' and adds the same value to all of them 
// In: 
// Reference to a vector(array) 
// Out: 
// Return: reference to vector with Elem value added to each 

Vector *scalar_plus(Vector *numbers, Elem) { 
    for (unsigned int i = 0; i <= numbers->size; i++){ 
     numbers[i] = numbers[i] + Elem; 
    } 
    return numbers; 
} 

Meine Fehler sind alle gleich. und hier sind sie

vecalc.cc:49:12: error: 'Vector' does not refer to a value 
    delete Vector *numbers; 
     ^
vecalc.cc:8:16: note: declared here 
typedef struct Vector { 
      ^
vecalc.cc:67:30: error: 'Elem' does not refer to a value 
    bigger[bigger->size-1] = Elem; // set last place in the new vector t... 
          ^
vecalc.cc:4:16: note: declared here 
typedef struct Elem { 
      ^
vecalc.cc:64:23: warning: comparison of integers of different signs: 'int' and 
    'unsigned int' [-Wsign-compare] 
    for (int i = 0; i <= numbers->size; i++) { 
        ~^~~~~~~~~~~~~~ 
vecalc.cc:81:35: error: 'Elem' does not refer to a value 
     numbers[i] = numbers[i] + Elem; 
           ^
vecalc.cc:4:16: note: declared here 
typedef struct Elem { 
       ^
vecalc.cc:98:4: error: 'Vector' does not refer to a value 
       *Vector = *alloc_vec(); 
       ^
vecalc.cc:8:16: note: declared here 
typedef struct Vector { 
      ^
vecalc.cc:99:11: error: 'Vector' does not refer to a value 
       assert(&Vector == NULL) 
         ^
vecalc.cc:8:16: note: declared here 
typedef struct Vector { 
      ^
vecalc.cc:103:14: error: 'Vector' does not refer to a value 
       print_vec(*Vector); 
         ^
vecalc.cc:8:16: note: declared here 
typedef struct Vector { 
      ^

und weil sie alle gleich ich bin sicher, wenn ich herausfinden, wie man beheben Ich werde sie alle ..

+0

Sie verwenden Strukturnamen, an denen Sie Variablen platzieren sollen. Sie müssen den Unterschied lernen. – Barmar

+0

Ich stimme ab, diese Frage als off-topic zu schließen, weil sie nicht einmal die grundlegendste Forschung zeigt. – IInspectable

+0

Es ist eigentlich eine ziemlich gute schriftliche Frage. Ich stimme zu, dass dies eine elementare Sache ist, aber der Code ist klar geschrieben und sogar deutlich kommentiert. Wenn jede Frage mit einer niedrigeren Qualität als diese geschlossen wäre, würden nur ein paar Dutzend Fragen pro Tag bleiben. – Rasty

Antwort

0

Die compilor sagt Ihnen, Sie sind Verwenden Sie den Typ Namen an Orten, wo Variablenname sein sollte. So zum Beispiel für den ersten Fehler sollte es nur delete numbers; gibt es auch Orte, wo Sie gerade den Variablennamen fehlen und nur Typen, bei denen beide oder nur die Variablennamen sein sollten.

Verwandte Themen