Я получаю ошибку компиляции candidate function(s) not accessible
при вызове некоторых участников, хотя я объявил их как public
.Я получаю сообщение об ошибке только тогда, когда задействован некоторый класс из vtk (в качестве возвращаемого типа или в качестве аргумента) и когда вызываемый класс находится не в том же VS-проекте, что и вызывающий код.Я также безуспешно пробовал другие типы vtk: (
Вот некоторый тестовый код:
// 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-типах?
С уважением, Ричн