特定のメンバーを呼び出すときにコンパイルエラーcandidate function(s) not accessible
が発生しましたが、私はpublic
と宣言しました。 vtkの何らかのクラスが(戻り値の型または引数として)関与しているときと、呼び出すクラスが呼び出し元のコードと同じVSプロジェクトにないときだけエラーが発生します。また、私は運で他のVTKの種類を試してみました:(ここなぜ公表されていますが、「候補関数にアクセスできません」
は、いくつかのテストコードです:
// calls to class library
A^ testA = gcnew A();
testA ->test1(vtkActor::New()); // error
testA ->test2(); // error
testA ->test3(""); // ok
testA ->test4(); // ok
// calls to this project
B^ testB = gcnew B();
testB ->test1(vtkActor::New()); // ok
testB ->test2(); // ok
testB ->test3(""); // ok
testB ->test4(); // ok
:
// A.h, in a seperate class library
#include <vtkActor.h>
public ref class A
{
public:
A(void);
void test1(vtkActor* actor);
vtkActor* test2();
void test3(char* actor);
char* test4();
};
// B.h, Same as A but in the same project as the calling code
#include <vtkActor.h>
ref class B
{
public:
B(void);
void test1(vtkActor* actor);
vtkActor* test2();
void test3(char* actor);
char* test4();
};
私は同じプロジェクトB
から関数を呼び出そうとしました。このようです
//エラーの2つの行では、これは正確なメッセージです。
error C3767: 'A::test1': candidate function(s) not accessible
どうすればいいですか?このエラーを解決しますか?なぜそれはvtkタイプでのみ起こるのですか?
種類について、 richn
私はそれが機能だとは分かりませんが、メモリアクセスです。 ** vtkActor :: new()**を関数呼び出しの外で移動してみてください。 – ChrisBD
こんにちはChrisBD!それはそうではありません:(私はメソッド呼び出しの外でアクターの初期化を移動しましたが、何も変更されませんでした。 – richn
vtkActorクラスは明らかに問題です、あなたはpublicと宣言しましたか?他のアセンブリで宣言されたクラスは、ヘッダーファイルの代わりにアセンブリ参照でインポートする必要があります –