0

我有一个给我的库,我应该将其中的一个子类化struct以在我自己的应用程序中使用。当我这样做时,它工作正常。但是,当我将子类定义更改为class而不是 struct 时(并且我确保public:在里面的所有内容之前),编译器(Visual Studio 编译器 10)给了我这个奇怪的错误:

typecast: conversion exists but is inaccessible

发生此错误的行如下所示:

LibraryNameSpace::Client c(config_options, &mySublassObject);

我不明白为什么从struct到的简单更改class会产生此错误;任何编译器添加的默认构造函数都适用于structor class,包括转换构造函数(如果这是这里的问题)。

是不是因为classstruct基类创建子类不是一个好主意?

4

1 回答 1

3

“结构”的成员默认是公共的,而“类”的成员默认是私有的。如果您不指定 public/private,则当您将“struct”更改为“class”时,“struct”中的所有成员都将变为私有。

你是私人继承还是公共继承?

class Subclass : public SuperClass {
public:
    // ...
};
于 2013-09-22T07:48:49.813 回答