从基类struct创建子类

时间:2013-09-22 07:18:03

标签: c++

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

typecast: conversion exists but is inaccessible

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

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

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

是否可能因为从class基类创建struct子类不是一个好主意?

1 个答案:

答案 0 :(得分:3)

默认情况下,'struct'的成员是公共的,而'class'的成员默认是私有的。如果您没有指定public / private,那么当您将其更改为“class”时,'struct'中的所有成员都将变为私有。

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

class Subclass : public SuperClass {
public:
    // ...
};