在GCC 4.6中,即使當由於移動構造函數而隱式刪除子對象的賦值操作符時,也可能繼承父對象的賦值操作符。在後來的GCC版本(以及Clang)中,這是不可能的。讓子類使用父代賦值操作符的正確方法是什麼? struct A
{
A & operator=(A const & other) = default;
};
struct B : public A
{
B() {}
例如,GCC和鐺均不能編譯下面的代碼: struct S {};
namespace N
{
void g(S);
}
using N::g;
namespace N
{
void g(int);
}
int main()
{
g(0);
}
與錯誤: test.cpp: In function 'int main()':
test.
這樣做是否合理? 注:這是一個最小的工作實例 class A {
public:
int getX() { return x; }
protected:
int x;
virtual void setX(int newX) = 0;
};
// Children can modify X
class Can_Modify_X : pu
我正在編寫由幾個「包」組成的實用程序庫。每個包中的類都包含在各種名稱空間中。我對如何通過在類聲明結尾自動聲明使用聲明來簡化情況有所瞭解(參見下文),這將避免程序員在cpp文件中執行它。 namespace Utility
{
class String
{
// Class Implementation
};
}
using Utility::Str