我正在打電話某些成員時,編譯錯誤candidate function(s) not accessible
,但我宣佈他們爲public
。 我只能得到錯誤時從vtk一些類是參與(如返回類型或參數),當被稱爲類是不在同一VS-項目作爲調用代碼。我也嘗試過其他類型的VTK沒有運氣:(爲什麼「候選人功能(S)無法訪問」,但聲明的公共
下面是一些測試代碼:
// 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
調用的函數是這樣的:
// 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
在有錯誤的兩行中,這是確切的消息:
error C3767: 'A::test1': candidate function(s) not accessible
我怎麼能解決這個錯誤?爲什麼它只發生在vtk類型上?
親切的問候, richn
我不確定它是函數,但內存訪問。嘗試在函數調用之外移動** vtkActor :: new()**。 – ChrisBD
嗨ChrisBD!這似乎並沒有被它:(我感動的方法調用外的演員初始化,但它並沒有改變anyhting。 – richn
的vtkActor類是明確的問題,你把它聲明公開?同時還要注意頭。文件,在另一組件聲明的類應該由一個組件引用,而不是頭文件被導入 –