Visual Studio 和 C++ 中使用类工厂自动创建对象
Visual Studio and automatic object creation using class factory in C++
我正在尝试使用 Visual Studio 2010 在C++中创建一个框架,我可以在创建对象的同时创建许多派生类的类定义。我一直在阅读一些这方面的内容,并了解可以使用的工厂模式。但是,我无法使其正常工作。
我有以下代码:
#include <stdio.h>
#include <iostream>
#include <vector>
class TestCase;
std::vector<TestCase*> testcases;
class base
{
public:
static void init();
};
template<class T>
class TestcaseFactory// : public base
{
public:
TestcaseFactory()
{
testcases.push_back(new T());
}
private:
};
class TestCase
{
public:
virtual void id() = 0;
};
#define TESTCASE(derived)
class derived;
TestcaseFactory<derived> testcase_##derived();
class derived : public TestCase
TESTCASE(derived1)
{
void id() {std::cout << "derived 1" << std::endl;}
};
TESTCASE(derived2)
{
void id() {std::cout << "derived 2" << std::endl;}
};
int main()
{
for(unsigned int i = 0; i < testcases.size(); ++i)
{
std::cout << i << std::endl;
testcases[i]->id();
}
getchar( );
}
并且期望 main()
中的循环调用两个创建的对象并打印
derived1
derived2
然而什么也没发生。由于某种原因,#define
中的代码永远不会被访问。我不知道为什么?
TestcaseFactory<derived> testcase_##derived();
此行声明函数,而不是变量。它是(最)令人烦恼的C++解析的变体 - 如果它可以是一个声明,那就是。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 确保在编译期间仅同时使用来自同一工厂的对象
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 从类模板创建对象的工厂函数模板?
- Visual Studio 和 C++ 中使用类工厂自动创建对象
- 用于从工厂类创建对象名称的未定义引用
- C++:如何为运行时模板参数创建对象工厂