C++ c++。hpp和.cpp
有人能告诉我创建包含类、子类和方法的.hpp和.cpp的正确方法是什么吗?我是否必须使用C++ c++。hpp和.cpp,c++,linux,C++,Linux,有人能告诉我创建包含类、子类和方法的.hpp和.cpp的正确方法是什么吗?我是否必须使用导出“C”firstClass*创建_对象{返回新的firstClass;}?(我在C++中工作)我应该有文件.HPP还是文件? #include <string> //public ?? how can i have this? class firstClass { public: firstClass(); class secondClass { publi
导出“C”firstClass*创建_对象{返回新的firstClass;}
?(我在C++中工作)我应该有<代码>文件.HPP<代码>还是<代码>文件?
#include <string>
//public ?? how can i have this?
class firstClass
{
public:
firstClass();
class secondClass
{
public:
secondClass();
std::string name;
virtual std::string method1();
} *sec;
virtual void DoSomething();
} *first;
// And for a private class?
class private *priv;
现在如果我必须extern
为每个类/子类创建一个对象?如果我想创建一个.so文件并使用dlsym和dlopen访问类、子类和方法、修改值、发送对特定方法的引用,这是必需的?谢谢
extern "C" firstClass* create_object()
{return new firstClass}
extern "C" secondClass* create_object()
{return new secondClass}
您是否有
file.hpp
或file.h
,这只是您的偏好问题。个人而言,我使用<代码> .HPP < /C>来表示C++而不是C.<
在C++中,与java不同的是,全局命名空间中的类不是<代码>公共<代码>或<代码>私有< /代码>。但是,您可以通过各种方式隐藏或限制对类的访问。例如:
- 让他们在另一个班级里
private
- 使用名称空间
- include
的语法是file.hpp
#include“file.hpp”
- 您的
和firstClass
类具有虚拟方法和默认析构函数。您应该将析构函数secondClass
和公开
,或虚拟
和非受保护
虚拟
- 类的定义通常如下所示:
class SomeClass {
// code
};
当你想要一个指向它的指针时,你可以写SomeClass*myPointer代码>,而不是您先声明和后声明的方式
您通常希望将类声明和/或定义与函数声明一起放在头文件中。实现放在源文件中。例如:
// Header file:
class FirstClass {
public:
FirstClass();
void DoSomething();
};
// Source file:
FirstClass::FirstClass()
{
// code
}
void FirstClass::DoSomething()
{
// code
}
我建议你去读一本C++教材,那里的基础知识很丰富。我个人的建议是。您是否有file.hpp
或file.h
只是偏好的问题。个人而言,我使用<代码> .HPP < /C>来表示C++而不是C.<
在C++中,与java不同的是,全局命名空间中的类不是<代码>公共<代码>或<代码>私有< /代码>。但是,您可以通过各种方式隐藏或限制对类的访问。例如:
- 让他们在另一个班级里
private
- 使用名称空间
其他几点:
- include
file.hpp
的语法是#include“file.hpp”
- 您的
firstClass
和secondClass
类具有虚拟方法和默认析构函数。您应该将析构函数公开
和虚拟
,或受保护
和非虚拟
- 类的定义通常如下所示:
类别定义:
class SomeClass {
// code
};
当你想要一个指向它的指针时,你可以写SomeClass*myPointer代码>,而不是您先声明和后声明的方式
您通常希望将类声明和/或定义与函数声明一起放在头文件中。实现放在源文件中。例如:
// Header file:
class FirstClass {
public:
FirstClass();
void DoSomething();
};
// Source file:
FirstClass::FirstClass()
{
// code
}
void FirstClass::DoSomething()
{
// code
}
我建议你去读一本C++教材,那里的基础知识很丰富。我个人的建议是.< /P>是C++的第一个编程语言…你似乎把语法和其他语言混淆了。看一看:请看,你错过了全部的基本知识。我不是初学者,我确实需要一些帮助:)。我对H.H文件和如何导出类。头文件是新手的东西。C++是你的第一个编程语言…你似乎把语法和其他语言混淆了。看一看:请看,你错过了全部的基本知识。我不是初学者,我确实需要一些帮助:)。我不熟悉.h文件和如何导出类。头文件是初学者的东西。