Я считаю, что самое лучшее, что нужно сделать, это рассмотреть этот тип запроса без поддержки. В большинстве других систем баз данных вы не можете включать столбцы, которые не находятся в предложении GROUP BY или в агрегатной функции в предложениях HAVING, SELECT или ORDER BY.
Вместо этого учтите, что ваш запрос читает:
SELECT ANY(name), dept, ANY(salary)
FROM emp
GROUP BY dept;
... поскольку это то, что происходит.
Надеюсь, это поможет ....
Что ж, для этой программы (пожалуйста, предоставьте правильные, компилируемые примеры)
#include <iostream>
class Temp
{
private:
~Temp() {}
friend class Final;
};
class Final : virtual public Temp
{
public:
void fun() { std::cout<<"In base"; }
};
class Derived : public Final {};
int main() {
Derived obj;
obj.fun();
}
Comeau Online говорит
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 16: error: "Temp::~Temp()" (declared at line 6) is inaccessible
class Derived : public Final {
^
detected during implicit generation of "Derived::Derived()" at line
21
"ComeauTest.c", line 16: error: "Temp::~Temp()" (declared at line 6) is inaccessible
class Derived : public Final {
^
detected during implicit generation of "Derived::~Derived()" at line
21
2 errors detected in the compilation of "ComeauTest.c".
Поскольку в случае сомнений я всегда доверяю como (я только когда-либо обнаружил одну ошибку в нем, но много в других компиляторах), я полагаю, что VC9 (который принимает код) ошибочен. (Исходя из этого void main ()
, я полагаю, вы тоже используете VC.)
FAQ по C ++ описывает различные способы достижения этой цели - но, судя по вашему вопросу, я думаю, вы их уже читали. ; -)
(Кроме того, main
должен всегда возвращать int
, никогда void
.)
Производный класс не вызывает частный деструктор базового класса, поэтому ему не нужна видимость.
Сделайте свои конструкторы закрытыми и предоставьте только статический генератор функция