所以我想编译一个非常简单的项目。由于某些原因,它在.cpp文件中找不到我的类。
这是代码: main.cpp中:
#include <iostream>
#include "Dog.h"
using namespace std;
int main()
{
Dog myDog;
return 0;
}
Dog.h:
#ifndef DOG_H
#define DOG_H
class Dog
{
public:
Dog();
virtual ~Dog();
Dog(const Dog& other);
Dog& operator=(const Dog& other);
protected:
private:
};
#endif // DOG_H
Dog.cpp:
#include "Dog.h"
Dog::Dog()
{
//std::cout << "I'm alive!";
}
Dog::~Dog()
{
//dtor
}
Dog::Dog(const Dog& other)
{
//copy ctor
}
Dog& Dog::operator=(const Dog& rhs)
{
if (this == &rhs) return *this; // handle self assignment
//assignment operator
return *this;
}
这非常基本,我仍然得到错误:&#39; Dog&#39;未在此范围内宣布。
我相信我需要将它添加到构建中,但我已经通过右键单击项目窗口中的dog.cpp并构建设置来实现这一点。
编译日志:
-------------- Build: Debug in MyProject (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -Iinclude -c C:\Users\tamas\Documents\MyProject\include\Dog.cpp -o obj\Debug\include\Dog.o
mingw32-g++.exe -Wall -fexceptions -g -Iinclude -c C:\Users\tamas\Documents\MyProject\main.cpp -o obj\Debug\main.o
C:\Users\tamas\Documents\MyProject\main.cpp: In function 'int main()':
C:\Users\tamas\Documents\MyProject\main.cpp:9:5: error: 'Dog' was not declared in this scope
Dog myDog;
^
C:\Users\tamas\Documents\MyProject\main.cpp:9:9: error: expected ';' before 'myDog'
Dog myDog;
^
答案 0 :(得分:0)
您在问题中发布的代码没有任何问题。
一些评论:
#include <iostream>
添加到Dog.cpp,以便您可以取消注释cout
构造函数中的Dog()
调用#include "Dog.h"
来导致错误
DOG_H
,则:
#define
DOG_H
复制到另一个头文件中。 (如果您的编译器支持使用非标准#pragma once
,则可以使用它而不是包含保护)答案 1 :(得分:0)
问题是正确的Dog.h文件应该在其他地方(在include /目录中)。