debug error:max必须具有union类结构类型

时间:2010-06-03 01:46:19

标签: c++

这是我的代码:

#include <iostream>
using namespace std;
class Sp
{ 
private :
    int a;
    int b;
public:
    Sp(int x = 0,int y = 0) : a(x), b(y) { };  

    int max(int x,int y);
};

int Sp::max(int a,int b) {  return (a > b ? a : b); };

int main()
{    
    int q,q1;
    cin >> q >>q1;
    Sp *mm = new Sp(q,q1);  
    cout << mm.max(q,q1);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

mm是指向Sp的指针;您需要使用->,而不是.

cout << mm->max(q,q1);

但是,无论如何动态创建Sp对象都没有意义;为什么不呢:

Sp mm(q, q1);
cout << mm.max(q, q1);

现在使用动态分配编写它时,不会破坏使用delete创建的对象,这是一种常见的编程错误。

答案 1 :(得分:1)

而不是:mm.max(q,q1);
你需要使用:mm->max(q,q1);
mm是一个指针,需要这样解决。

或者,你可以说:

Sp mm(q,q1);  
cout<< mm.max(q,q1);

并避免指针一起使用。