1

我已经完成了需要面向对象程序的第一个任务。我开始研究(相当大和复杂的)项目,在链接多个类文件及其关联的 .h 文件时遇到了一些障碍。基本上我不断收到“类的多重定义”错误,即使我有我的包含警卫并且没有全局变量。我不会为作业本身发布我的代码,但这是一个非常简化的示例,它给了我一个相同的错误:

//Runner file.
#include "Class1.cpp"
int main(){
    Class1 classtest();
    return 0;
}

-

//Class1.h
#ifndef CLASS1_H
#define CLASS1_H
class Class1
{
    public:
        Class1();
};
#endif // CLASS1_H

-

//Class1.cpp
#include "Class1.h"
#include <iostream>
#include "Class2.cpp"
using namespace std;
Class1::Class1()
{ 
    cout << "Created Test Class1";
    Class2 testClass();
}

然后几乎相同的 Class2 文件

//Class2.h
#ifndef CLASS2_H
#define CLASS2_H
class Class2
{
    public:
        Class2();
};
#endif // CLASS2_H

-

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

Class2::Class2()
{
    cout << "Created Class 2";
}

然后整个事情会产生大约 1.4 公制的错误,其中大部分格式为: obj\Debug\Runner.o||In functionClass2':|C:\Users\MikeD\Desktop\C++\ObjectOTesting\Class2.cpp|6| 多重定义Class2::Class2()'| obj\Debug\Class2.o:C:\Users\MikeD\Desktop\C++\ObjectOTesting\Class2.cpp|6|first defined here|

I KNOW I'm doing something stupid here, but I haven't been able to find out what exactly. Any help is really appreciated.

4

1 回答 1

2

You don't #include CPP files -- you compile them. CPP files, in turn, #include H files.

于 2012-11-06T20:58:35.047 回答