C++ 如何使用类的头文件?
我在创建Hello World的OOP版本时遇到问题。如何将世界对象定义添加到标题中 Main.cpp:C++ 如何使用类的头文件?,c++,C++,我在创建Hello World的OOP版本时遇到问题。如何将世界对象定义添加到标题中 Main.cpp: #include "stdafx.h" #include "World.h" #include <iostream> int main() { World world; World world2(5); std::cin.get(); return 0; } 错误: 1>d:\programming\c++\consoleapplicat
#include "stdafx.h"
#include "World.h"
#include <iostream>
int main() {
World world;
World world2(5);
std::cin.get();
return 0;
}
错误:
1>d:\programming\c++\consoleapplication1\consoleapplication1\world.h(2): error C2062: type 'int' unexpected
1>d:\programming\c++\consoleapplication1\consoleapplication1\main.cpp(6): error C2079: 'world' uses undefined class 'World'
1>d:\programming\c++\consoleapplication1\consoleapplication1\main.cpp(7): error C2079: 'world2' uses undefined class 'World'
您的标题应该如下所示
#ifndef CLASS_World
#define CLASS_World
class World
{
private:
int m_nValue;
public:
World()
int World(int value)
#endif
您的标题应该如下所示
#ifndef CLASS_World
#define CLASS_World
class World
{
private:
int m_nValue;
public:
World()
int World(int value)
#endif
在头文件中定义类。当然,您也应该使用,以避免其他几个文件包含相同的头时出现问题(您当前的示例没有问题,但这仍然是一个很好的做法): 并在cpp文件中定义该类的成员函数:
#include "World.h"
#include <iostream>
World::World()
{
std::cout << "Hello World!" << std::endl;
}
World::World(int test)
{
std::cout << "Hello World!" << std::endl;
}
World::~World()
{
std::cout << "Good Bye!" << std::endl;
}
当您不希望类的接口难以读取,但仍然希望能够不使用.cpp文件时,这非常有用。但是,请注意,当您构建的项目包含多个不同文件中的头文件时,不使用.cpp文件可能会增加编译时间,并且如果您对该头文件中的成员函数的实现进行了哪怕是最轻微的更改,也会触发所有这些文件的重建。因此,在大多数情况下,每个类都有一个.cpp文件是一个好主意,因为您可以自由编辑该文件,而不会触发包含头文件的每个其他源文件的重建。在头文件中定义您的类。当然,您也应该使用,以避免其他几个文件包含相同的头时出现问题(您当前的示例没有问题,但这仍然是一个很好的做法): 并在cpp文件中定义该类的成员函数:
#include "World.h"
#include <iostream>
World::World()
{
std::cout << "Hello World!" << std::endl;
}
World::World(int test)
{
std::cout << "Hello World!" << std::endl;
}
World::~World()
{
std::cout << "Good Bye!" << std::endl;
}
当您不希望类的接口难以读取,但仍然希望能够不使用.cpp文件时,这非常有用。但是,请注意,当您构建的项目包含多个不同文件中的头文件时,不使用.cpp文件可能会增加编译时间,并且如果您对该头文件中的成员函数的实现进行了哪怕是最轻微的更改,也会触发所有这些文件的重建。因此,在大多数情况下,为每个类提供一个.cpp文件是一个好主意,因为您可以自由编辑该文件,而不会触发对包含标头的所有其他源文件的重新生成。类定义应该放在标头中。成员函数定义等通常放在实现文件中。任何一本好书都应该包含这些信息和示例。“我如何将世界对象定义添加到我的标题中?”通过将其放在标题中而不是cpp文件中,类定义应该放在标题中。成员函数定义等通常放在实现文件中。任何一本好书都应该包含这些信息和示例。“我如何将世界对象定义添加到我的标题中?”方法是将其放在标题中,而不是放在cpp文件中
#include "World.h"
#include <iostream>
World::World()
{
std::cout << "Hello World!" << std::endl;
}
World::World(int test)
{
std::cout << "Hello World!" << std::endl;
}
World::~World()
{
std::cout << "Good Bye!" << std::endl;
}
#ifndef WORLD_H
#define WORLD_H
#include <iostream>
class World {
public:
World();
World(int test);
~World();
};
inline World::World()
{
std::cout << "Hello World!" << std::endl;
}
inline World::World(int test)
{
std::cout << "Hello World!" << std::endl;
}
inline World::~World()
{
std::cout << "Good Bye!" << std::endl;
}
#endif