【问题标题】:Redefinition of a class in C++ [closed]在 C++ 中重新定义一个类 [关闭]
【发布时间】:2014-12-02 18:45:17
【问题描述】:

我是 C++ 新手,遇到了一个名为“错误”的问题,称为

“语义问题:'B' cB.h 的重新定义”。

我有两个类,A 和 B,其中 cA 应该通过引用处理 cB 的对象和 cA 的一个友元函数 fExample。代码是这样的:

.h 文件 cA:

#include "cB.h"

class A{
  int val1, val2;
public:
  friend void fExample(int, cB &);
};

.h 文件 cB:

class B{
  int val1, val2;
public:
  void set_val1(int);
};

.cpp 文件 cB:

#include <iostream>
#include "cB.h"
using namespace std;

void B::set_val1(int tVal){
  val1 = tVal;
}

对我来说,似乎没有办法通过引用 cA 的友元函数来处理 cB 对象。我会知道一些解决方法,但这不是我的意图,我想学习如何以正确的方式处理这个问题。

提前感谢您的帮助!

【问题讨论】:

标签: c++ class header friend-function


【解决方案1】:

这种类型的错误通常是由于缺少包含保护而发生的。最简单的方法是:

#ifndef HEADER_NAME
#define HEADER_NAME

您也可以使用#pragma once

【讨论】:

  • 虽然得到广泛支持,#pragma once(与任何其他 pragma 一样)是非标准的,但包含警卫是更好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
相关资源
最近更新 更多