我在C#项目中有几个自定义类,然后我在C ++项目中引用它。 C#代码看起来像这样
namespace AllOptions
{
public class AllOptions {
public AlgorithmOptions algOptions{ get; set; }
public DatabaseOptions dataOptions{ get; set; }
}
public class AlgorithmOptions {
List<Algorithm> algorithms { get; set; }
public void SetDefaults(){
this.algorithms.Clear();
}
}
public class Algorithm {
public bool AllowSalt { get; set; }
}
public class DatabaseOptions {
public List<string> databaseSrouces { get; set; }
}
}
然后从C ++我试图访问AllOptions的各个部分,但并非所有部分都通过。
//Is declared at the beginning
public: VerifyOptions::VerifyOptions Options;
//Then later on I try to access the database options and algorithm options
this->Options.databaseOptions->databaseSources = someStringList; //works fine
//This cannot find the algorithm list
this->Options.algorithmOptions->algorithms = someAlgorithmList; //does not work
算法说&#34; Class AllOptions :: AlgorithmOptions没有成员算法&#34;。为什么C ++代码看不到这个特定的C#成员?
编辑我的问题被标记为可能与此Default access modifier in C#问题重复。但是我认为这些是导致相同答案的不同问题。如果我认为我错了,请再次标记,我会改变它。
答案 0 :(得分:7)
x
是私人会员。只有包含类才能访问其私有成员。相比之下,AlgorithmOptions.algorithms
是公共成员,您可以从任何地方访问它。