C++ c++。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

有人能告诉我创建包含类、子类和方法的.hpp和.cpp的正确方法是什么吗?我是否必须使用
导出“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文件和如何导出类。头文件是初学者的东西。