gpt4 book ai didi

C++ 抽象基类的重新定义

转载 作者:行者123 更新时间:2023-11-28 01:24:27 25 4
gpt4 key购买 nike

使用派生类可以构建的构造函数实现抽象基类。我在编译代码时遇到问题,对于使用命名空间标准,我提前表示歉意;它在我的作业中是必需的。

我尝试了 headerguards 并检查了我的包含代码。我将文件分为主文件 (Assn2)、抽象基类 (S2D) .h 和 .cpp 文件。

在主文件 Assn2 中

#include <iostream>
#include <string>
#include <fstream>
#include "S2D.h"

在 S2D.h 中

#ifndef _S2D_H_
#define _S2D_H_
#include <iostream>
#include <string>
using namespace std;

class ShapeTwoD {

private:
string name;
bool containsWarpSpace;

public:
ShapeTwoD();
ShapeTwoD(string, bool);

在 S2D.cpp 中

#include <iostream>
#include <string>
#include "S2D.h"

using namespace std;

class ShapeTwoD {
ShapeTwoD::ShapeTwoD() {
name = " ";
containsWarpSpace = false;
}

ShapeTwoD::ShapeTwoD(string Name, bool ContainsWarpSpace) {
name = Name;
containsWarpSpace = containsWarpSpace;
}

};

这是我收到的错误。

S2D.cpp:7:7: error: redefinition of ‘class ShapeTwoD’
class ShapeTwoD {
^~~~~~~~~

In file included from S2D.cpp:3:
S2D.h:7:7: note: previous definition of ‘class ShapeTwoD’
class ShapeTwoD {
^~~~~~~~~
make: *** [S2D.o] Error 1

只是一个跟进问题,我正在尝试基于这个抽象基类实现派生类。我正在尝试基于这些抽象构造函数创建具有更多参数的派生类构造函数。

例如。

Rectangle::Rectangle(string Name, bool ContainsWarpSpace, int YSize, int XSize, int(*ArrY), int (*ArrX) )

我想知道我在 Java 中学到的这个概念在 C++ 中是否适用?

最佳答案

在 S2D.cpp 中

#include <iostream>
#include <string>
#include "S2D.h"

using namespace std;
class ShapeTwoD { // delete this line
   ShapeTwoD::ShapeTwoD() {
name = " ";
containsWarpSpace = false;
}

ShapeTwoD::ShapeTwoD(string Name, bool ContainsWarpSpace) {
name = Name;
containsWarpSpace = containsWarpSpace;
}
}; // delete this line

关于C++ 抽象基类的重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54570512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com