相关疑难解决方法(0)

C++包含并重新定义了类错误

我目前正在编写一个程序,根据不同的参数搜索歌曲.在我的系统中有两种类型的歌曲:歌词和乐器.因为我需要将它们都放在1个向量中,所以我有一个歌曲类和一个LyricsSong&InstrumentalSong子类.

所以我有一个Song.h文件:

#include <stdio.h>
#include <iostream>
#include <string>


class Song
{
public:
    std::string title;
    virtual void print();
    virtual void printSong(std::string query);
};
Run Code Online (Sandbox Code Playgroud)

还有乐器和歌词子类,它们以这种方式定义:

class LyricsSong : public Song
class InstrumentalSong : public Song
Run Code Online (Sandbox Code Playgroud)

两者都包括Song.h,在这两个类中,类只在头文件中定义.

当我尝试运行另一个使用这两个子类的文件时,包括:

#include "LyricsSong.h"
#include "InstrumentalSong.h"
Run Code Online (Sandbox Code Playgroud)

(显然更多的cpp库),我得到以下编译错误:

In file included from /cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/InstrumentalSong.h:16:0,
                 from /cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/songsParser.cpp:26:
/cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/Song.h:6:7: error: redefinition of 'class Song'
 class Song
       ^
In file included from /cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/LyricsSong.h:15:0,
                 from /cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/songsParser.cpp:25:
/cygdrive/c/Users/Username/Documents/C++ Workshop/ex2/ex2_code/Song.h:6:7: error: previous definition of 'class Song'
 class Song
       ^
Run Code Online (Sandbox Code Playgroud)

什么时候: …

c++ polymorphism inheritance multiple-inheritance include

0
推荐指数
2
解决办法
4255
查看次数

为什么#endif包含在.h页面的末尾?

#endif#ifndef和之后放在c ++头文件的开头是不好的做法#define?如果是这样,为什么?

这个问题没有涉及为什么#endif到最后 - 这是我在谷歌搜索的具体内容.

例如

//cDate.h
#ifndef CDATE_H_EXISTS
#define CDATE_H_EXISTS

#include <string>


class cDate {
  private:
    std::string day;
    std::string month;
    std::string year;
  public:
    void setDate(std::string, std::string, std::string);
    std::string getDate(int);
}; // end class def

#endif
Run Code Online (Sandbox Code Playgroud)

VS

 //cDate.h
    #ifndef CDATE_H_EXISTS
    #define CDATE_H_EXISTS
    #endif

    #include <string>


    class cDate {
      private:
        std::string day;
        std::string month;
        std::string year;
      public:
        void setDate(std::string, std::string, std::string);
        std::string getDate(int);
    }; // end class def
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
1392
查看次数

C++:编译时出现多个“多重定义”错误

我是类和面向对象编程的新手。我们的老师让我们创建一个程序,该程序必须有一个.cpp文件、一个主.cpp文件和一个.hpp文件。

以下是每个文件:

首先,odometer.hpp文件:

class Odometer
{
    int miles;
    float gallons, mpg;

public:
    //Constructors
    Odometer(); //Default
    Odometer(float g, int m); 

    //Mutator Functions
    void Set_miles(int m);
    void Set_gallons(float g);

    //Functions
    void Add_trip(int m, float g);
    int Check_mileage(float g);
    void Print_info();

    //Accessor Functions
    float Get_mpg();
    float Get_gallons();
    int Get_miles();
};
Run Code Online (Sandbox Code Playgroud)

接下来,odometer.cpp文件:

#include "odometer.hpp"
#include <iostream>

//Constructors
Odometer::Odometer()
{
    miles = 0;
    gallons = 0.0;
    mpg = 0.0;
}

Odometer::Odometer(float g, int m)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ oop

0
推荐指数
1
解决办法
3714
查看次数

大多数人的代码中ONLINE_JUDGE是什么?

大多数人在他们的代码中写下这个。

剂量是什么意思?

有什么用#ifndef

#ifndef ONLINE_JUDGE
   freopen("E://ADpan//in.in", "r", stdin);
   freopen("E://ADpan//out.out", "w", stdout);
#endif
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
4978
查看次数