-1

我正在尝试处理 HDL 到 C++ 的转换,但遇到了一些障碍。在 Ubuntu 上使用 Verilator 进行转换很容易,但是一种数据类型让我很烦。

层次结构中的顶部代码是...

#include <iostream>
#include "VDorQ24Syms.h"
#include "VDorQ24.h"

using namespace std;
// FUNCTIONS
VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)
    // Setup locals
    : vm_namep(namep)
    , vm_activity(false)
    , vm_didInit(false)
    // Setup submodule names
{
    // Pointer to top level
    tOPp = topp;
    // Setup each module's pointers to their submodules
    // Setup each module's pointer back to symbol table (for public functions)
    tOPp->Vconfigure(this, true);
    // Setup scope names
}

将数据传递给函数

VDorQ24Syms::VDorQ24Syms(VDorQ24* topp, const char* namep)

是我没有得到的。第二个参数很容易理解。第一个,不多。

我的意思是,编译器希望我通过什么?哪种数据类型?

我想像这样传递数据......

VDorQ24* randomCharacter;
if (VDorQ24Syms(randomCharacter, szAscii) == /*condition*/)
{
    return /*value*/;
}

但 'randomCharacter' 未初始化。

VDorQ24* randomCharacter = /*How do I initialize this?*/;
4

1 回答 1

0

您的示例不完整,但这可能会对您有所帮助。

您的变量randomCharacter不是您的类的实例VdorQ24,它是指向您的类的指针。

如果要初始化变量,请将其设置为nullptr

VdorQ24* randomCharacter = nullptr; // now you can be 100% certain that it's null.

如果你真的想创建一个新的实例VdorQ24,你可以简单地忘记指针并使用值。这里我们调用默认构造函数:

// Not a pointer, initialize the instance of your class directly.
VDorQ24 randomCharacter;

//              v---- Here we send a pointer to your variable using the '&' operator.
if (VDorQ24Syms(&randomCharacter, szAscii) == /*condition*/)
{
    return /*value*/;
}

如果要将参数发送到构造函数,可以使用以下语法:

VDorQ24 randomCharacter{param1, param2};

事实上,任何类型都可以用这种语法初始化,即使是 int 和数组:

int a{1};

float b[] = {1.f, 2.f, 3.f};
于 2016-10-21T21:01:26.633 回答