【问题标题】:expected ')' before object. class does not name a type [duplicate]对象之前的预期')'。类没有命名类型[重复]
【发布时间】:2018-11-21 09:29:37
【问题描述】:

我不知道发生了什么。我在头文件中包含了文件保护,但仍然出现错误。

这些是我的课程:

汽车.h

    #ifndef CAR_H
    #define CAR_H

    #include "Color.h"

    class Car
    {
        public:
            Car(Color a);
            void printInfo();
        private:
            Color carColor;
    };
    #endif

汽车.cpp

    #include "Car.h"
    #include <iostream>

    using namespace std;
    Car::Car(Color a)
    : carColor(a)
    {
    }

    void Car::printInfo() {
        cout << "the car is ";
        carColor.printColor();
    }

颜色.h

#ifndef COLOR
#define COLOR

#include "Car.h"
#include <iostream>


using namespace std;

class Color
{
    public:
        Color(string c);
        void printColor();


    private:
        string colorr;
};
#endif // COLOR

颜色.cpp

#include "Color.h"
Color::Color(string c)
: colorr(c)
{
}

void Color::printColor() {
    cout << colorr;
}

编辑: 伙计们,我没有侮辱任何人。想象一下你写了很多字,stackoverflow 给你关于问题的错误,你编辑,但仍然是一样的,然后再次编辑......这种情况一次又一次地发生。我应该多写什么??这个问题简单而简短,甚至不需要解释。

【问题讨论】:

  • 你应该习惯于使用const string&amp; 而不是string 作为参数。引用比副本便宜,const 有助于传达关于可变性的意图。
  • 你至少也可以尝试做个文明人。快点!如果您想知道为什么这个问题被大力否决,那么除了您自己之外,没有人可以责备。
  • “我应该多写点什么??这个问题简单而简短,甚至不需要解释它。” 嗯......你可以(阅读应该) 在您的问题正文中引用完整和准确 错误消息。您还应该指出编译器报告的错误的确切位置。这个问题可能简单而简短,但解释您对代码和错误消息的理解/期望仍然是一个好主意。这将有助于人们为您的问题提供更好的答案并解决您的误解。

标签: c++ class dependencies include g++


【解决方案1】:

首先,您应该从Color.h 中删除#include "Car.h"

它创建了一个不必要的循环包含,并且编译器在知道Color 是一个类之前就命中了Car(Color a)

您还需要包含标题 &lt;string&gt; 以将字符串输出到 cout。

下一次,也许不要侮辱帮助你的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多