我知道在C#中有一種方法可以讓一個變量取值,只要它們共享一個基類,但我很難用C++。我正在嘗試做什麼?我該如何獲得一個向量來使用相同的基類在兩個不同的類中?
這是我的代碼如下所示:
class BaseClass
{
public:
virtual void Setup() = 0;
virtual void DisplayText() = 0;
};
class A: public BaseClass
{
public:
void Setup();
void DisplayText();
};
class B: public BaseClass
{
public:
void Setup();
void DisplayText();
};
//main.cpp
A a;
B b;
std::vector<BaseClass> vector = std::vector();
void main()
{
vector.push_back(a);
vector.push_back(b);
for_each (vector.begin(), vector.end(), vector.Setup());
return 0;
}
與我有什麼,現在雖然它給我這個錯誤,當我嘗試運行此:
IntelliSense: no instance of overloaded function
"std::vector<_Ty,_Alloc>::push_back [with _Ty=BaseClass,,Alloc=std::allocator<BaseClass>]"
matches the argument list
argument types are: (A*)
object type is: std::vector<BaseClass, std::allocator<BaseClass>>
我不知道它是否會工作,但嘗試創建智能指針,而不是原始對象,這些推入載體。 – adam10603 2015-02-09 00:30:32
在C++中,void main()不是標準的,它應該更正爲int main()。 – cbel 2015-02-09 00:58:02
@ adam10603什麼是智能指針? – SyntaxIsEvil 2015-02-09 01:44:49