У меня есть два класса, которые зависят друг от друга:
class Foo; //forward declaration
template <typename T>
class Bar {
public:
Foo* foo_ptr;
void DoSomething() {
foo_ptr->DoSomething();
}
};
class Foo {
public:
Bar<Foo>* bar_ptr;
void DoSomething() {
bar_ptr->DoSomething();
}
};
Когда я компилирую его в g ++, это давало ошибку "Недопустимого использования неполного типа", но это было скомпилировано приятно в MSVC 10. Действительно ли возможно решить эту проблему при хранении объявления и определения в одном заголовочном файле? (никакие cpp файлы), Если это не позволяется в стандарте, так этот из MSVC "ошибка" или "функция"?
Да, просто переместите определения методов из определения класса:
class Foo; //forward declaration
template <typename T>
class Bar {
public:
Foo* foo_ptr;
void DoSomething();
};
class Foo {
public:
Bar<Foo>* bar_ptr;
void DoSomething() {
bar_ptr->DoSomething();
}
};
// Don't forget to make the function inline or you'll end up
// with multiple definitions
template <typename T>
inline void Bar<T>::DoSomething() {
foo_ptr->DoSomething();
}
оцифровка
из ядра NumPy даст вам индекс ячейки, к которой принадлежит каждое значение в гистограмме:
import numpy as NP
A = NP.random.randint(0, 10, 100)
bins = NP.array([0., 20., 40., 60., 80., 100.])
# d is an index array holding the bin id for each point in A
d = NP.digitize(A, bins)
-121--2268913- Для решения этой проблемы можно написать атрибут ActionMethodAttribute
, который проверяет MethodInfo
для каждого действия и сравнивает его с разнесенными значениями Form, а затем отклоняет любой метод, для которого значения формы не совпадают (за исключением имени кнопки, конечно).
Вот пример: - http://blog.abodit.com/2010/02/asp-net-mvc-ambiguous-match/
Можно также создать более простой атрибут ActionMethodAttribute
, который смотрит только на имя кнопки отправки, но будет более тесно связывать контроллер и просмотр.
См. следующую страницу: Каков лучший способ решения проблемы со-зависимыми классами в C++?
Он должен прояснить проблему и предоставить пару хороших решений.