1

我正在使用生成器 6。

不知道如何修复错误:

[C++ Error] loltimer.cpp(11): E2316 '_fastcall TForm1::TForm1(TComponent *)' is not a member of 'TForm1'
[C++ Error] loltimer.cpp(18): E2062 Invalid indirection

我的 .cpp 代码:

// line 11
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    comboSpell(ComboBox1);
}
//---------------------------------------------------------------------------

void TForm1::comboSpell(TComboBox *combo){
    // line 18
    *combo ->Items->Add("Flash");
    *combo ->Items->Add("Ignite");
    *combo ->Items->Add("Exhaust");
    *combo ->Items->Add("Teleport");
    *combo ->Items->Add("Ghost");
    *combo ->Items->Add("Heal");
    *combo ->Items->Add("Smite");
    *combo ->Items->Add("Barrier");
} 

我的 .h 代码:

public:     // User declarations
    __fastcall TForm1(TComponent Owner);
    void comboSpell(TComboBox *combo);
4

2 回答 2

4

标头具有参数 asTComponent而 .cpp 具有参数 as TComponent *。你需要它们是一样的。

于 2013-12-28T16:56:47.143 回答
2

[C++ 错误] loltimer.cpp(11): E2316 '_fastcall TForm1::TForm1(TComponent *)' 不是 'TForm1' 的成员

构造函数的声明TForm()在 .h 和 .cpp 代码中是不同的,特别是在Owner参数中。他们需要匹配:

public:     // User declarations
    __fastcall TForm1(TComponent *Owner);

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    ...
}

[C++ 错误] loltimer.cpp(18): E2062 无效间接

您正在使用运算符取消引用combo指针*,然后使用运算符再次取消引用它->。这在这种情况下不起作用。您需要:

  1. 单独使用->运算符(典型用法):

    combo->Items->Add("Flash");
    
  2. 使用.运算符而不是->运算符(不典型):

    (*combo).Items->Add("Flash");
    
于 2013-12-29T05:13:07.617 回答