我希望我的caba结构包含一个指向aba结构变量的指针。我还希望aba结构根据set 的属性执行一些操作。
但是当我在caba中使用aba指针的属性时,出现错误
#include<stdio.h>
#include<set>
using namespace std;
struct aba;
struct caba
{
aba *m;
int z;
bool operator >(const caba &other)
{
if(m==NULL||other.m==NULL)
return true;
return (*m).x>(*(other.m)).x;
}
};
set <caba> t;
struct aba
{
int x,y;
bool f()
{
return !t.empty();
}
};
int main()
{
return 0;
}
说:
在成员函数`bool caba :: operator>(const caba&)'中:
Test.cpp | 13 |错误:无效使用未定义的类型'struct aba'
Test.cpp | 4 |错误:向前声明“ struct aba”
Test.cpp | 13 |错误:无效使用未定义的类型'struct aba'
Test.cpp | 4 |错误:向前声明“ struct aba”
但是为什么aba未定义?有一个原型。
最佳答案
您已经声明了aba,但是您的代码也需要定义。您可以做的是将有问题的代码移出caba
类定义,并移到同时包含.cpp
和aba.h
的caba.h
实现文件中。
// caba.h (include guards assumed)
struct aba;
struct caba
{
aba *m;
int z;
bool operator >(const caba &other);
};
//caba.cpp
#include "caba.h"
#include "aba.h"
bool caba::operator >(const caba &other)
{
if(m==NULL||other.m==NULL)
return true;
return (*m).x>(*(other.m)).x;
}