Если D - производный класс базового класса B, то вы можете назначить объект типа Derived переменной (или параметру) типа Base.
ПРИМЕР
class Pet
{
public:
string name;
};
class Dog : public Pet
{
public:
string breed;
};
int main()
{
Dog dog;
Pet pet;
dog.name = "Tommy";
dog.breed = "Kangal Dog";
pet = dog;
cout << pet.breed; //ERROR
Хотя указанное назначение разрешено, значение, присвоенное переменной pet, теряет поле породы. Это называется проблемой нарезки.
2. КАК ИЗМЕНИТЬ ПРОБЛЕМУ СЦЕПЛЕНИЯ
Чтобы устранить проблему, мы используем указатели на динамические переменные.
ПРИМЕР
Pet *ptrP;
Dog *ptrD;
ptrD = new Dog;
ptrD->name = "Tommy";
ptrD->breed = "Kangal Dog";
ptrP = ptrD;
cout << ((Dog *)ptrP)->breed;
В этом случае ни один из элементов данных или функций-членов динамической переменной, на которые указывает ptrD (объект класса потомка), будет потерян. Кроме того, если вам нужно использовать функции, функция должна быть виртуальной.
Это известная проблема с Chrome, если вы проверяете ее. Используйте XAMPP для запуска локального веб-сервера и проверьте свой вызов ajax.
Проверьте этот билет: https://code.google.com/p/chromium/issues/detail?id=40787
Некоторые браузеры реализуют сильные меры безопасности, чтобы запретить загружаемым веб-страницам доступ к произвольным файлам в файловой системе.
Переключиться на браузер с более слабой безопасностью (я думаю, Firefox разрешает доступ к локальным файлам через XHR) или останавливается пытаясь запустить сайт без HTTP.
chrome --allow-file-access-from-files
– pdem
16 February 2017 в 11:31
cd /path/to/project/folder
, затем> python -m SimpleHTTPServer 8080
Используйте 127.0.0.1:8080 или вариацию, которую может пожелать ваша система. (OSX, Py 2.7x) – Marc 1 July 2015 в 19:00