我希望我的caba结构包含指向aba结构变量的指针。并且我还希望aba结构根据set的属性执行一些操作< caba>。
但是当我在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&gt;(const caba&amp;)':
Test.cpp | 13 |错误:无效使用未定义类型`struct aba'
Test.cpp | 4 | error:`struct aba'的前向声明
Test.cpp | 13 |错误:无效使用未定义类型`struct aba'
Test.cpp | 4 | error:`struct aba'的前向声明
但为什么aba未定义?它有一个原型。
答案 0 :(得分:2)
您已声明 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;
}