我有以下头文件:
#include <iostream>
#include "product.h"
using namespace std;
class ProductInfo : Product
{
int UPC;
public:
ProductInfo() : Product(NULL, 0.0), UPC(0)
friend istream& operator>>(istream& is, ProductInfo& pinfo);
};
Product
包含受保护的变量float price
当我尝试在我的提取运算符中更改float price
时,我的IDE(CLion)告诉我protected 'Product::price is inaccessible'
以下是cpp文件中的相关代码:
#include "productinfo.h"
istream& operator>>(istream& is, ProductInfo& pinfo)
{
char info[256];
if (is.getline(info, 256))
{
strtok(info, ",");
pinfo.UPC = atoi(info);
pinfo.setName(strtok(NULL, ","));
pinfo.price = atof(strtok(NULL, ","));
}
return is;
}
我做错了什么或者这是我的IDE的问题吗?
答案 0 :(得分:0)
class ProductInfo : Product
表示私人继承;因此ProductInfo
(及其朋友)无法按名称访问Product
的私人或受保护成员。
可能你想使用公共继承:
class ProductInfo : public Product