获取“void *不是指针对象类型”错误,但代码在使用XCode时执行完美

时间:2015-03-08 16:00:58

标签: c++ compiler-errors void-pointers

执行以下代码时,执行功能更改时会出现上述错误。我没有使用过任何解除引用,也没有在任何地方使用过void *。起初我认为这是因为(double *)malloc(..)但即使使用静态内存分配问题仍然存在。另外,编译器说max_element不是std ::或&#34的成员;错误:' max_element'未在此范围内宣布"

#include <iostream>
#include <cmath>
#include <tgmath.h>
#include <vector>
#include <stdio.h>
using namespace std;

struct Exchange{
    int nHalf ;
    int nThird ;
    int nFourht ;
    int amDollars[3] ;
 };
void change (double n, Exchange& a) ;

// Main function for the program
int main( )
{
    int i = 0 ;
    vector <int> n ;
    n.reserve(10) ;
    vector<Exchange>coin ;
    coin.reserve(10) ;
//    n = (double *) malloc(sizeof(double)) ;
    do{
        cin >> n[i] ;
        change (n[i], coin[i]) ;
        coin[i].amDollars[0] =
        coin[i].nHalf + coin[i].nThird + coin[i].nFourht ;
        coin[i].amDollars[1] = n[i] ;
        coin[i].amDollars[2] = 0 ;
        cout << *max_element(&coin[i].amDollars[0], &coin[i].amDollars[2]) << endl ;
        i++ ;
    }while (i < 10) ;

    return 0;
}

void change (double n, Exchange& a) {

    a.nHalf = trunc(n/2) ;
    a.nThird = trunc(n/3) ;
    a.nFourht = trunc(n/4) ;

}

1 个答案:

答案 0 :(得分:0)

tgmath.h很可能产生第一个错误。尝试将其替换为ctgmath。或者,如果您不需要使用复数操作,只需使用cmath