2016-10-30 5 views
0

내 모든 오류는 똑같은 것이며 이유를 파악할 수 없습니다. 조언이 도움이 될 것입니다. 절차 적 C++을 사용해야합니다.C++ 프로 시저에서 "값을 참조하지 않습니다"오류

#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; 
} 

내 오류는 모두 같습니다. 여기에 당신이, 그들은

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 { 
      ^

하고 그들은 모두 동일하기 때문에 내가 해결하는 방법을 알아낼 경우 하나 내가 그들 모두를 얻을 수 있습니다 확신합니다 ..

+0

변수를 넣어야하는 구조체 이름을 사용하고 있습니다. 차이점을 알아야합니다. – Barmar

+0

가장 기본적인 연구조차도 보여주지 않기 때문에이 질문을 주제와 관련이없는 것으로 끝내기로했습니다. – IInspectable

+0

실제로는 꽤 좋은 서면 질문입니다. 나는 이것이 초등적인 것에 동의하지만, 코드는 분명하게 쓰여지고 심지어 명확하게 주석 처리된다. 이 질문보다 낮은 품질의 질문이 모두 닫히면 하루에 몇 가지 질문 만 남습니다. – Rasty

답변

0

compilor 당신을 말하고있다 유형의 이름을 사용합니다. 변수 이름은이어야합니다. 예를 들어 첫 번째 오류의 경우에는 단지 delete numbers;이어야합니다. 변수 이름을 직접 입력하지 않고 변수 이름 만 입력해야하는 유형이있는 곳도 있습니다.