3

my_project.h

#pragma once

#include <vcclr.h>
#include "MyManagedClass.h"

namespace my_namespace 
{
   MyManagedClass^ DoSomething(const Foo* foo);
} 

次のエラーが発生しました:

1) error C2143: syntax error : missing ';' before '^'
2) error C4430: missing type specifier - int assumed. 
     Note: C++ does not support default-int

プロジェクトはとして作成されましたc++/cli

"MyManagedClass.h"

public ref class MyManagedClass
{
public:
System::UInt32 GetMember()
{
   return m_member;
}
private:
System::UInt32 m_member;
};

他のファイルではすべてが機能しますが、ここでは、私が間違ったことは何ですか?

ETA:

私はこのように関数を変更しました:

namespace my_namespace 
{
   MyManagedClass^ DoSomething(const System::String^ str);
} 

そして、それは問題を解決しませんでしたが、何らかの理由でリターンタイプをに変更するvoidと、すべてが正常に機能します

4

1 に答える 1

0

問題を再作成しましたが、同じエラーが発生しました。パラメータを削除するとconst Foo* foo(メソッドDoSomethingがパラメータを受け取らないようにする)、エラーが削除されました。また、を追加してみtypedef char* Foo;たところ、エラーもなくなりました。

の定義を確認してくださいFoo。エラーが発生しているようです。


コードをコピーしてVisualStudioに貼り付けましたが、MyManagedClassタイプにエラーはありませんでした。エラーを見つける場合は、さらにコードを表示する必要があります。

おそらく、ディレクティブをMyManagedClass忘れた名前空間にありますか?using namespace

于 2013-01-23T17:15:44.157 に答える