- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 C++ 的新手,我正试图将一个小项目放在轮子上,但我很难解决这些错误,而且我不知道自己做错了什么。我想,我已经包含了所有必要的头文件。我做错了什么?
提前致谢!
d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(31): error C2065: 'CmdAritmetice' : undeclared identifier
d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(31): error C2062: type 'int' unexpected
d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(37): error C2065: 'cmd1' : undeclared identifier
d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(37): error C2228: left of '.Execute' must have class/struct/union
type is ''unknown-type''
编辑
如果我修改CmdAritmetice <int, Suma> cmd1("+");
与 UI::CmdAritmetice<Calcule::Suma<int>> cmd1("+");
尝试编译时出现以下错误:
1>d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(32): error C2440: 'specialization' : cannot convert from 'T (__cdecl *)(T,T)' to 'int (__cdecl *)(int,int)'
1> None of the functions with this name in scope match the target type
1>d:\files\visual studio 2010\projects\calculator\aplicatie.cpp(39): error C2660: 'Calculator::UI::CmdAritmetice<Operatie>::Execute' : function does not take 1 arguments
1> with
1> [
1> Operatie=0x0
1> ]
main.cpp
#include "aplicatie.h"
using namespace Calculator;
int main()
{
Aplicatie app;
app.Run();
return 0;
}
aplicatie.cpp 已编辑
#include <iostream>
#include "aplicatie.h"
#include "Calcule\operatii.h"
#include "UI\cmdaritmetice.h"
using namespace std;
namespace Calculator{
(...)
void Aplicatie::Run()
{
TestSuma();
CmdAritmetice <int, Suma> cmd1("+"); //here i have errors
cmd1.Execute("Introduceti doua numere intregi (x, y)");
}
void Aplicatie::TestSuma()
{
int x = 10, y = 20;
int r = Calcule::Suma(x,y);
}
}
cmdaritmetice.h
#ifndef ARITMETICE_H
#define ARITMETICE_H
#include "UI\comanda.h"
namespace Calculator{
namespace UI{
template<int Operatie(int, int)>
class CmdAritmetice : public ComandaCalcule
{
public:
CmdAritmetice(const string &nume) : ComandaCalcule(nume)
{
}
void Execute()
{
cout << Nume() << endl;
cout << "Introduceti doua numere intregi (x, y)\n";
int x, y;
cin >> x >> endl;
cin >> y >> endl;
cout << x << " " << Nume() << " " << y << " = " << Operatie (x,y) <<endl;
}
};
}
}
#endif
LE
**operatii.h**
#ifndef OPERATII_H
#define OPERATII_H
namespace Calculator{
namespace Calcule{
template<typename T>
T Suma(T x, T y)
{
return x + y;
}
}
#endif
最佳答案
CmdAritmetice
在命名空间 Calculator::UI
中定义,而 Aplicatie
在命名空间 Calculator
中定义。因此,您必须在 Calculator
命名空间中将 CmdAritmetice
称为 UI::CmdAritmetice
。
至于错误说 Suma
找不到,你还没有发布 Suma
的定义,所以很难说那里发生了什么,但是检查一下确保它也没有在某些嵌套命名空间中定义。
编辑:CmdAritmetice
的定义是
template<int Operatie(int, int)>
class CmdAritmetice : public ComandaCalcule
{
// ...
};
因此它需要一个模板参数,该参数是具有签名 int(int, int)
的函数,即接受 2 个 int
并返回一个 的函数整数
。在 Aplicatie::Run()
中,您尝试将类实例化为
CmdAritmetice <int, Suma>
显然这是行不通的,模板参数需要是一个与您在定义中指定的签名相匹配的函数。此外,对 Suma
的引用需要限定为 Calcule::Suma
。
我认为你打算做的是
UI::CmdAritmetice<Calcule::Suma<int>> cmd1("+");
关于c++ - 错误 C2065 : undeclared identifier in template function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914434/
更新:添加关于 Hashable 的相同错误 我已经创建了一个 Identifiable 兼容协议(protocol)和兼容结构。然后,当我创建列表并在 ForEach 中引用它时,我收到错误 Typ
这只是我偶然发现的例子! 我正在使用 cout与 operator // imports the declaration of std::cout using namespace std; // ma
我有一些表,我使用 MySQL Workbench 创建了 role_has_action 表。 创建的字段是:(role_id,action_id,action_controller_id): (为
我有一个 codesign 无法完全验证的应用程序,因为它“不满足其指定的要求”。第一次检查返回“在磁盘上有效”,所以没关系。 codesign -dvvvv -r- PATH_TO_APP 告诉我要
我正在使用 Java SDK 创建 SAS 来访问 blob。这是代码: SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy(); p
#include "stdafx.h" #include #include #include #include #include using namespace std; #define T
我在代码中看到了这两种方法。你能解释一下这两者有什么区别吗?正如我认为它与 C++ 完成命名空间查找的方式有关,您能否也提供一些相关信息,或者提供一个好的文档的链接?谢谢。 最佳答案 示例: #inc
我一直在使用一个工具 sbconstants从我的 Xcode 项目中的 Storyboard 标识符和重用标识符创建外部常量。 我已将包含这些常量的所有声明的 header #imported 到项
我想知道 bundle Identifier(在 info.plist 中)之间的区别。以及产品 Bundle Identifier(在 Build Setting -> Packaging -> P
我有课Identifier它本质上是 UUID 的类型安全包装器(因此类 Foo 包含 Identifier )。 FooStore类有一个方法 List> bulkReadIdentifiers()
在 Go 中,公共(public)名称以大写字母开头,私有(private)名称以小写字母开头。 我正在编写一个不是库的程序,它是一个单独的包。是否有任何 Go 习语规定我的标识符应该全部公开还是全部
我有一个页面 url,它看起来像: http://mydomain.com/nodes/32/article/new?return=view 安装 tomcat 7 后,尝试访问它时出现此异常: /n
我正在学习以下教程: http://www.appcoda.com/ios7-programming-ibeacons-tutorial/ 但是,我没有使用 iPhone 作为信标,而是使用制造商(R
我在为我的 iPhone 应用程序的下一版本上传 .app 文件时收到此错误“Bundle Identifier differents from prior bundle identifier”。 注
Scene 1, Layer 'script', Frame 1, Line 9 1084: Syntax error: expecting identifier before this. Sc
升级到 Xcode 7 后,我注意到 CFBundleIdentifier 已开始指向在 Build Settings/Packaging 中找到的产品捆绑标识符,而不是 Info.Plist 中的捆
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this question 我在
我使用 Apache DBCP 来获取连接池,我每次都使用 PoolingDataSource 来获取连接。当我向数据库中插入一个对象时,它工作得很好,但是当我尝试从数据库中选择一个元素时,就会出现问
由于我项目的 react-native 版本 (0.44.3),我正在尝试在版本 0.6.4 中安装包 react-native-today-widget,我能够成功安装包: yarn add rea
之前有人问过这个问题,我已经查看了所有其他 stackoverflow 主题的答案,但我无法解决这个问题。 我的应用程序在所有平台的模拟器中运行良好,但是当我在我的设备上运行该应用程序时,我收到错误代
我是一名优秀的程序员,十分优秀!