История изменений
Исправление MOPKOBKA, (текущая версия) :
Не, погоди. Вот у тебя два дерева: в одном string, в другом int. Что мешает мне вызвать функцию, которая получает int, на дерево, в котором string?
Несовместимый тип.
struct rbtree_c { ... };
void rbtree_c_set(
struct rbtree_c *rb,
const void *element,
int element_size
);
template <typename T>
class rbtree<T> {
private:
rbtree_c rb;
public:
void set(const T* item) { rbtree_c_set(&rb, item, sizeof(T)); }
};
rbtree<int> rbtree_int;
rbtree_int.set("hello"); // error
Если ты шаблонизировал struct RBTree, зачем страдание с char *?
Это обвязка для вызовов, а не для структуры и ее основных методов. Пример выше. Про плюсы этого подхода я написал еще более выше.
Исправление MOPKOBKA, :
Не, погоди. Вот у тебя два дерева: в одном string, в другом int. Что мешает мне вызвать функцию, которая получает int, на дерево, в котором string?
Несовместимый тип.
struct rbtree_c { ... };
void rbtree_c_set(
struct rbtree_c *rb,
const void *element,
int element_size
);
template <typename T>
class rbtree<T> {
private:
rbtree_c rb;
public:
void set(T item) { rbtree_c_set(&rb, &item, sizeof(item)); }
};
rbtree<int> rbtree_int;
rbtree_int.set("hello"); // error
Если ты шаблонизировал struct RBTree, зачем страдание с char *?
Это обвязка для вызовов, а не для структуры и ее основных методов. Пример выше. Про плюсы этого подхода я написал еще более выше.
Исправление MOPKOBKA, :
Не, погоди. Вот у тебя два дерева: в одном string, в другом int. Что мешает мне вызвать функцию, которая получает int, на дерево, в котором string?
Несовместимый тип.
struct rbtree_c { ... };
void rbtree_c_set(
struct rbtree_c *rb,
const void *element,
int element_size
);
template <typename T>
class rbtree<T> {
private:
rbtree_c rb;
public:
void set(T item) { rbtree_c_set(&rb, &item, sizeof(item)); }
};
rbtree<int> rbtree_int;
rbtree_int.set("hello"); // error
Если ты шаблонизировал struct RBTree, зачем страдание с char *?
Это обвязка для вызовов, а не для структуры и ее основных методов. Пример выше. Про плюсы этого подхода я написал выше.
Исправление MOPKOBKA, :
Не, погоди. Вот у тебя два дерева: в одном string, в другом int. Что мешает мне вызвать функцию, которая получает int, на дерево, в котором string?
Несовместимый тип.
struct rbtree_c { ... };
void rbtree_c_set(
struct rbtree_c *rb,
const void *element,
int element_size
);
template <typename T>
class rbtree<T>
{
rbtree_c rb;
void set(T item) { rbtree_c_set(&rb, &item, sizeof(item)); }
};
rbtree<int> rbtree_int;
rbtree_int.set("hello"); // error
Если ты шаблонизировал struct RBTree, зачем страдание с char *?
Это обвязка для вызовов, а не для структуры и ее основных методов. Пример выше. Про плюсы этого подхода я написал выше.
Исходная версия MOPKOBKA, :
Не, погоди. Вот у тебя два дерева: в одном string, в другом int. Что мешает мне вызвать функцию, которая получает int, на дерево, в котором string?
Несовместимый тип.
struct rbtree_c { ... };
void rbtree_c_set(
struct rbtree_c *rb,
const void *element,
int element_size
);
template <typename T>
class rbtree<T>
{
rbtree_c rb;
void set(T item) { rbtree_c_set(&rb, &item, sizeof(item)); }
};
rbtree<int> rbtree_int;
rbtree_int.set("hello"); // error