#ifndef BAR_H
#defind BAR_H
class Foo;
class Bar
{
Bar();
virtual ~Bar();
public:
const Foo* getP();
const Foo getS();
int getW();
void setValues (Foo* m, Foo n, int o);
protected:
Foo* p;
Foo* s;
int w;
};
#endif
#ifndef FOO_H
#define FOO_H
class Bar;
class Foo
{
Foo(int key, std::string str);
virtual ~Foo();
int id;
std::string inst;
public:
std::vector<Bar*> getBars();
std::vector<Foo*> getP();
std::vector<Foo*> getS();
protected:
std::vector<Foo*> p;
std::vector<Foo*> s;
std::vector<Bar*> e;
};
#endif
#include <string>
#include <vector>
#include "Bar.h"
Bar::Bar()
{
w=0;
}
Bar:~Bar() {}
void Bar::setValues(Foo* m, Foo* n, int o)
{
p=m;
s=n;
w=o;
}
const Foo * Bar::getP()
{
return p;
}
const Foo* Bar::getS()
{
returns;
}
int Bar::getW()
{
return w;
}
#include <string>
#include <vector>
#include "Foo.h"
Foo::foo(int key, std::string str)
{
id = key;
inst = str;
}
Foo::~Foo() {}
std:vector<Bar*> Foo::getBars()
{
return e;
}
std::vector<Foo*> Foo::getP()
{
return p;
}
std::vector<Foo*> Foo::getS()
{
return s;
}
我花了两天时间研究我能做什么。我跟着以下 - 标题或包含语句中没有* .cpp - 只有标题中的声明 - * .cpp中的定义 - 尝试在Bar.cpp中添加#include“Foo.h” - &gt;没有帮助 - 尝试在Foo.cpp中添加#include“Bar.h” - &gt;没有帮助 - 同时尝试上述两个步骤 - &gt;没有帮助
我现在很紧张,真的可以使用帮助。谢谢
答案 0 :(得分:1)
即使它们返回不同的值,也不能有两个具有相同名称的函数。尝试在其中一个类中为getS()提供不同的名称。
此外,如果这些类不被其他类继承,那么您不需要将析构函数设置为虚拟。
答案 1 :(得分:1)
在 Bar.h :
中查看此行 void setValues (Foo* m, Foo n, int o);
然后在 Bar.cpp :
中的这个 void Bar::setValues(Foo* m, Foo* n, int o)
然后标题不匹配,您必须在Foo n
Foo*
声明为.hpp