我有一个库给我,我应该将其中一个struct
子类化,以便在我自己的应用程序中使用。当我这样做,它工作正常。但是,当我将我的子类定义更改为class
而不是struct(并且我确保在所有内容之前都确保public:
)时,编译器(Visual Studio编译器10)给出了这个奇怪的错误:
typecast: conversion exists but is inaccessible
发生此错误的行如下所示:
LibraryNameSpace::Client c(config_options, &mySublassObject);
我不明白为什么从struct
到class
的简单更改会产生此错误;任何编译器添加的默认构造函数都适用于struct
或class
,包括转换构造函数(如果这是问题)。
是否可能因为从class
基类创建struct
子类不是一个好主意?
答案 0 :(得分:3)
默认情况下,'struct'的成员是公共的,而'class'的成员默认是私有的。如果您没有指定public / private,那么当您将其更改为“class”时,'struct'中的所有成员都将变为私有。
你也是私人还是公共继承?
class Subclass : public SuperClass {
public:
// ...
};