0

是否可以用于case 1一个标题和case 2另一个?因为当我在程序中使用这两个标题时,我遇到了ambiguous symbol错误。

标题 1(winapifunctions.h)

 #include <Windows.h>

 void CallWindowProc(String^ windowtitle)
 {
 };

标题 2(classes.h)

 using namespace System;
 using namespace System::Collections::Generic;

 public delegate void Super();
 public ref class Event{}; 
 public ref class MyException:public DivideByZeroException{};
 public interface class IType{};
 public interface class IVal{};
 public ref class Writer abstract{};
 public ref class Check: public Writer,public IType,public IVal
 .....other classes

主程序

#include "stdafx.h"
#include "classes.h"
#include "winapifunctions.h"
int main(array<System::String^>^ args)
{
  //read x
  switch(x){ case 1: {CallWindowProc("title");break;} case 2: { Check^ obj = gcnew Check();break;}
};

和错误 -IServiceProvider:ambiguous symbol

4

2 回答 2

4

简短的回答:没有。

长答案:包含在编译期间由预处理器处理,而您的case语句在运行时处理。没有办法让编译时的事情在运行时发生。

你到底想达到什么目的?

于 2012-05-06T10:33:10.937 回答
0

您可以使用以下代码解决此问题:

// 1.cpp
case 1:
    DoCase1();
    break;
case 2:
    DoCase2();
    break;

// 2.cpp
#include <Windows.h>
void DoCase1()
{
    // ...
}

// 3.cpp
#include <AnotherHeader.h>
void DoCase2()
{
    // ...
}

如果您要发布更多代码和确切的错误消息,也许可以找到更好的解决方案。

于 2012-05-06T10:42:52.003 回答