我是C++的新手,对成员变量多态性有疑问.我有以下类定义 -
class Car
{
public:
Car();
virtual int getNumberOfDoors() { return 4; }
};
class ThreeDoorCar : public Car
{
public:
ThreeDoorCar();
int getNumberOfDoors() { return 3; }
};
class CarPrinter
{
public:
CarPrinter(const Car& car);
void printNumberOfDoors();
protected:
Car car_;
};
Run Code Online (Sandbox Code Playgroud)
和实施
#include "Car.h"
Car::Car()
{}
ThreeDoorCar::ThreeDoorCar()
{}
CarPrinter::CarPrinter(const Car& car)
: car_(car)
{}
void CarPrinter::printNumberOfDoors()
{
std::cout << car_.getNumberOfDoors() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行以下命令时,会调用父类的getNumberOfDoors.我可以通过使成员变量Car成为指针来解决这个问题,但我更喜欢通过引用而不是指针(我理解为首选)传入输入.你能告诉我我做错了什么吗?谢谢!
ThreeDoorCar myThreeDoorCar;
std::cout << myThreeDoorCar.getNumberOfDoors() << std::endl;
CarPrinter carPrinter(myThreeDoorCar);
carPrinter.printNumberOfDoors();
Run Code Online (Sandbox Code Playgroud) 我正在绘制一些 [date, value] 格式的数据(cpu 随时间使用)并希望 xtics 从 0 或 1 开始,而不是第一个日期。
所以 10 小时它应该看起来像:0:01:00, 0:02:00, .., 0:10:00insead of 9:23:00 ...(因为数据中的第一天是 9 号晚上 11 点)。
我当前的日期时间设置:
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set xtics format "%d:%H:%M" font ",25"
Run Code Online (Sandbox Code Playgroud)
编辑:如果有一种方法可以在没有日期信息的情况下从 x 轴上的 0 开始计算小时数,那也太棒了。无论哪种方式。我只想从 0 开始计数,以使“所用时间”非常清楚。
我正在尝试制作一个文本冒险,其中不同的“地点”类可以互相指向。
例如,我有一个Manager类,其中包含每个地方的引用。然后我有一个Home班级,一个Club班级,通过经理互相引用。问题是由于循环引用我无法实例化它们。
这是我解决它的方法,但它很丑陋,因为我必须places在方法而不是__init__.
class Manager:
def __init__(self):
self.home = Home(self)
self.club = Club(self)
class Home:
def __init__(self, manager):
self.places = {}
self.manager = manager
def display_plot_and_get_option (self):
print "where do you want to go?"
return 'club' #get this from user
def get_next_place(self, place_name):
self.places = { #THIS IS THE BAD PART, which should be in __init__ but can't
'home':self.manaer.home
'club':self.manaer.club }
return self.places[place_name]
class Club:
#similar code to Home
pass …Run Code Online (Sandbox Code Playgroud) 以下代码很奇怪:
>>> words = "4324324 blahblah"
>>> print re.findall(r'(\s)\w+', words)
[' ']
>>> print re.search(r'(\s)\w+', words).group()
blahblah
Run Code Online (Sandbox Code Playgroud)
该()操作似乎与较差的findall行为.为什么是这样?我需要它为csv文件.
为清晰起见编辑:我想blahblah使用findall 显示.
我发现那re.findall(r'\s(\w+)', words)就是我想要的,但不知道为什么findall以这种方式对待团体.