Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获得;void*不是指向对象类型的指针;错误,但代码在使用XCode时可以完美执行_C++_Compiler Errors_Void Pointers - Fatal编程技术网

C++ 获得;void*不是指向对象类型的指针;错误,但代码在使用XCode时可以完美执行

C++ 获得;void*不是指向对象类型的指针;错误,但代码在使用XCode时可以完美执行,c++,compiler-errors,void-pointers,C++,Compiler Errors,Void Pointers,当执行下面的代码时,当执行函数更改时,我得到了上面提到的错误。我没有使用任何去引用,也没有在任何地方使用void*。起初我认为这是因为(double*)malloc(..),但即使使用静态内存分配,问题仍然存在。此外,编译器说max_元素不是std::的成员,或者“错误:max_元素未在此范围内声明” #包括 #包括 #包括 #包括 #包括 使用名称空间std; 结构交换{ int nHalf; 第三鸟; int nFourht; 国际货币单位[3]; }; 无效变更(双重n、交换和a); //

当执行下面的代码时,当执行函数更改时,我得到了上面提到的错误。我没有使用任何去引用,也没有在任何地方使用void*。起初我认为这是因为(double*)malloc(..),但即使使用静态内存分配,问题仍然存在。此外,编译器说max_元素不是std::的成员,或者“错误:max_元素未在此范围内声明”

#包括
#包括
#包括
#包括
#包括
使用名称空间std;
结构交换{
int nHalf;
第三鸟;
int nFourht;
国际货币单位[3];
};
无效变更(双重n、交换和a);
//程序的主要功能
int main()
{
int i=0;
向量n;
n、 储备(10);
矢量币;
硬币.储备(10);
//n=(双*)malloc(sizeof(双));
做{
cin>>n[i];
零钱(n[i],硬币[i]);
硬币[i]。美元[0]=
硬币[i].nHalf+coin[i].nHird+coin[i].nFourht;
硬币[i].美元[1]=n[i];
硬币[i]。美元[2]=0;

很可能第一个错误是由产生的。尝试用
ctgmath
替换它。或者,如果您不需要对复数进行操作,只需使用
cmath

好吧,编译器是对的。看起来
max\u元素
不是在这个范围内声明的,除非它在其中一个头中。我现在很困惑,不是吗max_元素只是std库中包含的一个成员函数?是的。但是你需要包含
才能得到它。:)而且,它是执行的,所以我猜如果没有声明max_元素,程序将输出错误的答案……我可能缺少一些基本的东西,因为我刚开始使用c++时,也尝试不使用
命名空间std;
(特别是在全局范围内)以避免名称冲突。最好明确使用
std::
前缀。
#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) ;

}