Override C++ - кто знает, помогите - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Разное / Other > Курилка / Yak floor

Курилка / Yak floor
Свободное общение, рассуждения на любые интересные вам темы.

Ответ
Опции темы
Непрочитано 30.12.2011, 22:23   #1
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Override C++ - кто знает, помогите

Есть код

  1.  
  2. /*
  3.  * Copyright 2010-2011 napile
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  * [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. #pragma once
  18.  
  19. #include <string>
  20. #include <vector>
  21. #include "config.h"
  22.  
  23. class ClasspathEntry
  24. {
  25. protected:
  26. std::string _path;
  27. public:
  28. ClasspathEntry();
  29.  
  30. virtual void addToClassPath(std::vector<std::string> list) ;
  31. };
  32.  
Code: C++
  1.  
  2. /*
  3. * Copyright 2010-2011 napile
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. #pragma once
  18. #include "ClasspathEntry.h"
  19.  
  20. class ClasspathDirectory : public ClasspathEntry
  21. {
  22. public:
  23. std::string _pattern;
  24.  
  25. ClasspathDirectory(std::string path, std::string patt);
  26.  
  27. void addToClassPath(std::vector<std::string> list) override;
  28. };
  29.  
Code: C++


и есть метод

  1.  
  2. void JVMOptions::initClasspath()
  3. {
  4. _classpath.push_back(ClasspathDirectory("lib", "*"));
  5.  
  6. DEBUG("------------------------------------------------------------------");
  7. DEBUG("Calling initClasspath " + StringUtils::toString(_classpath.size()));
  8.  
  9. std::vector<std::string> list;
  10.  
  11. for(int i = 0; i < _classpath.size(); i++)
  12. {
  13. ClasspathEntry entry = _classpath[i];
  14.  
  15. entry.addToClassPath(list);
  16. }
  17.  
  18. DEBUG("------------------------------------------------------------------");
  19. }
  20.  
  21.  
Code: C++


Итог я получаю
  1.  
  2. void ClasspathEntry::addToClassPath(std::vector<std::string> list)
  3. {
  4. DEBUG("Calling ClasspathEntry.addToClassPath");
  5. }
  6.  
Code: C++

Как сделать что б вызывалось с детей, entry.addToClassPath(list);, а не с матери

Добавлено через 3 минуты
Ах да реализация
  1.  
  2. /*
  3.  * Copyright 2010-2011 napile
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  * [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. #include "ClasspathDirectory.h"
  18. #include "FileUtils.h"
  19. #include "common.h"
  20.  
  21.  
  22. ClasspathDirectory::ClasspathDirectory(std::string path, std::string patt)
  23. {
  24. _path = path;
  25. _pattern = patt;
  26. }
  27.  
  28. void ClasspathDirectory::addToClassPath(std::vector<std::string> list)
  29. {
  30. std::string currentPath = std::string(EXE_MAKER_CURRENT_DIR);
  31.  
  32. if (!FileUtils::isAbsolute(currentPath))
  33. currentPath = FileUtils::concFile(FileUtils::getExecutablePath(), currentPath);
  34.  
  35. DEBUG("Path to search " + currentPath + "; pattern " + _pattern);
  36. }
  37.  
  38.  
Code: C++

Последний раз редактировалось VISTALL; 30.12.2011 в 22:26. Причина: Добавлено сообщение
VISTALL вне форума Ответить с цитированием
Непрочитано 30.12.2011, 22:29   #2
Пользователь

По умолчанию Re: Override C++ - кто знает, помогите

динамически создавай обьект и вызывай через указатель
T *obj = new T(...);
obj->myVirtualMethod();
hex1r0 вне форума Ответить с цитированием
Непрочитано 30.12.2011, 22:30   #3
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Override C++ - кто знает, помогите

Цитата:
Сообщение от hex1r0 Посмотреть сообщение
динамически создавай обьект и вызывай через указатель
код посмотри

void JVMOptions::initClasspath() метод

просто там не один наследник
VISTALL вне форума Ответить с цитированием
Непрочитано 30.12.2011, 22:33   #4
Пользователь

По умолчанию Re: Override C++ - кто знает, помогите

псевдокод (не тестировал) (вектор будет сохранять указатели)

Код:
_classpath.push_back(new ClasspathDirectory("lib", "*"));
 
	DEBUG("------------------------------------------------------------------");
	DEBUG("Calling initClasspath " + StringUtils::toString(_classpath.size()));
 
	std::vector<std::string> list;
 
	for(int i = 0; i < _classpath.size(); i++)
	{
		ClasspathEntry *entry = _classpath[i];
 
		entry->addToClassPath(list);
	}
 
	DEBUG("------------------------------------------------------------------");
hex1r0 вне форума Ответить с цитированием
Непрочитано 30.12.2011, 22:40   #5
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Override C++ - кто знает, помогите

как бы, std::vector<ClasspathEntry> _classpath;

Добавлено через 3 минуты
и сменой шаблона как бы, не изменит ситуацию

Последний раз редактировалось VISTALL; 30.12.2011 в 22:44. Причина: Добавлено сообщение
VISTALL вне форума Ответить с цитированием
Непрочитано 30.12.2011, 22:57   #6
Пользователь

По умолчанию Re: Override C++ - кто знает, помогите

http://developer.kde.org/~wheeler/cpp-pitfalls.html

111:
Свернуть ↑Развернуть ↓
hex1r0 вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 30.12.2011, 23:04   #7
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Override C++ - кто знает, помогите

Странно то что я сделал так, ток ниче не дало
VISTALL вне форума Ответить с цитированием
Непрочитано 30.12.2011, 23:11   #8
Пользователь

По умолчанию Re: Override C++ - кто знает, помогите

std::vector<ClasspathEntry*> _classpath; ?
hex1r0 вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 30.12.2011, 23:12   #9
Аватар для Array
Супергерой

По умолчанию Re: Override C++ - кто знает, помогите

Хм, у меня заработало. Не ожидал такого (:
 
	A ** data;
	data = new A*[2];
 
	B b;	b.f(); // b
	C c;	c.f(); // c
 
	data[0] = &b;
	data[0]->f(); //  b
 
Code: C++
Array вне форума Ответить с цитированием
Непрочитано 30.12.2011, 23:13   #10
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Override C++ - кто знает, помогите

Цитата:
Сообщение от hex1r0 Посмотреть сообщение
std::vector<ClasspathEntry*> _classpath; ?
спс)

итог

std::vector<ClasspathEntry*> _classpath;

 
void JVMOptions::initClasspath()
{
	_classpath.push_back(&ClasspathDirectory("lib", "*"));
 
	DEBUG("------------------------------------------------------------------");
	DEBUG("Calling initClasspath " + StringUtils::toString(_classpath.size()));
 
	std::vector<std::string> list;
 
	for(int i = 0; i < _classpath.size(); i++)
	{
		ClasspathEntry *entry = _classpath[i];
 
		entry->addToClassPath(list);
	}
 
	DEBUG("------------------------------------------------------------------");
}
 
Code: C++
можно закрыть тему
VISTALL вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
а кто знает?? Darvin Lineage II 2 20.11.2011 14:37
@Override - Помогите Wolfas Java 7 05.11.2011 17:07
Ошибки в консоли кто знает яву помогите mikolas2008 Серверная часть 9 26.10.2010 13:41
хто знает? Nik_Epic Lineage II 2 04.10.2009 17:57
кто знает? Rayon Lineage II 6 25.09.2008 10:33


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:13. Часовой пояс GMT +3.

Вверх