小编Dor*_*scu的帖子

'base'是'衍生'的难以接近的基础

为什么基地无法deriv进入deriv?该程序编译class deriv : public base.

#include <cstdio>

class base
{
};

class deriv : base
{
  public:
  void f(deriv, int){printf("deriv::f(deriv, int)\n");}
  void f(base){printf("deriv::f(base)\n");}
};

int main()
{
  deriv d;
  d.f(d);
}

17: error: ‘base’ is an inaccessible base of ‘deriv’
17: error:   initializing argument 1 of ‘void deriv::f(base)’
Run Code Online (Sandbox Code Playgroud)

因为两个人已经弄错了,我会粗体问:为什么base需要公开继承?它仅从内部访问deriv.

c++ inheritance

3
推荐指数
2
解决办法
5013
查看次数

vim或gcc的无法解释的行为

我运行这个简单的程序:

#include <iostream>
#include <string>
using namespace std;

#include <boost/regex.hpp>

int main ()
{

//    boost::regex fullname_regex ("[A–Z]+[a–z]*, [A-Z][a–z]*");
boost::regex fullname_regex ("[A-Z]+[a-z]*, [A-Z][a-z]*");

string name;
cout << "Enter you full name: " << flush;

getline (cin, name);
if (! regex_match (name, fullname_regex))
{
    cout << "Error: name not entered correctly" << endl;
}

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我刚从某处复制过的.当我取消注释注释行(原始复制/粘贴的一部分)并注释下一个(由我自己键入)时,程序始终拒绝该名称.否则它按预期工作.我正在使用vim.我确实:set list看到了隐藏的字符和线条相同.我在原始行之前插入一个长注释以便将其向下移动,怀疑是磁盘故障(非常旧的系统),但我仍然得到了相同的错误.这是一个没有gui的ubuntu服务器,我用putty来做这个.我不习惯linux下的这类问题,如果有人知道什么可以解释这种奇怪的行为,请告诉我.也许vim仍然使用原始页面中的一些选项,这是在这里并且格式化,确实,但:set list没有显示它们?

c++ regex linux vim

2
推荐指数
1
解决办法
113
查看次数

标签 统计

c++ ×2

inheritance ×1

linux ×1

regex ×1

vim ×1