- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 linux 静态库项目中有 3 个文件,我想在两个类方法实现文件中使用的静态字段存在链接问题。我有 class1.h、class1main.cpp 和 class1utils.cpp。 class1.h 定义了一个名为 class1 的类,其中包含所有静态方法和一个名为 pDb 的静态字段。 .cpp 文件定义了分为两个文件的 class1 方法的实现。
在 class1.h 中,我声明了静态:
class class1 {
công cộng:
static Database * pDb;
...
}
在 class1main.cpp 中,我在顶部定义了实际的静态:
Database * class1::pDb;
所以,我认为我可以在 class1utils.cpp 中执行以下操作:
extern Database * class1::pDb;
但是当我制作项目并引入库时,pDb 在链接时被多次定义。有人可以告诉我如何在第二个源文件中引用静态文件以便我可以使用它(并且它会链接)吗?
如果我将 class1utils.cpp 中的方法移回 class1main.cpp,并删除 class1utils.cpp,则链接有效。
感谢您的任何建议。科里。
1 Câu trả lời
您应该只包含 class1.h。声明变量不需要其他任何东西。
这样做的一个原因是,如果您可以在不存在类定义的情况下声明静态成员变量,那么静态成员的访问说明符将被隐藏。编译器将无法检查访问权限。
此外,如果没有定义 class1,您甚至不能引用 class1 的成员(如 extern Database *class1::pDb;
)。如果你尝试 class class1;数据库 *class1::pDb;
你应该得到一个错误,你正在使用一个未定义的类型 class1
。所以外部声明是多余的。
另一方面,如果您的类没有非静态成员,则表明您可能不应该使用该类。 C++ 不像 Java,Java 的一切都必须在一个类中。在 C++ 中,您可以根据需要在命名空间中简单地声明自由函数和变量。
在这种情况下,您将使用 extern 来声明 class1.h 中的变量,而不是使用 static:
// class1.h
namespace class1 {
extern Database *pDb;
}
// class1main.cpp
Database *class1::pDb;
关于类的第二个实现文件中静态字段的 C++ 外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420770/
Làm thế nào tôi có thể hướng dẫn webpack loại trừ tất cả các mô-đun d3? // không hoạt động externals: { "d3-*": "d3" } Vì vậy, nếu ứng dụng nhập d3-submod
Câu hỏi này đã có câu trả lời ở đây: Đã đóng cách đây 9 năm. Có thể trùng lặp: “outer =>” thực sự có nghĩa là gì? Tôi có thể tìm thông tin về đặc điểm After ở đâu?
Đây là một vòng lặp đơn giản mà tôi đang cố gắng đánh giá hiệu suất của nó. var extremeLoop=hàm(n){ var thời gian=ngày mới() var t=0; cho(
Vấn đề + Tổng quan Dưới đây là hai đoạn mã có các div ban đầu bị ẩn rồi hiển thị thông qua cú nhấp chuột vào nút và .show() của jQuery. Cả hai div đều có kiểu display: grid; được áp dụng bởi một bảng kiểu bên ngoài.
Tôi có một trang HTML và một tệp .js riêng biệt được bao gồm trong trang bằng thẻ . Đây là tệp .js của tôi: element = document.getElementById("test");
Tôi có 3 tệp trong một dự án thư viện tĩnh Linux và tôi gặp sự cố liên kết với một trường tĩnh mà tôi muốn sử dụng trong hai tệp triển khai phương thức lớp. Tôi có class1.h, class1main.cpp và class1utils.cpp. lớp
Tôi đang cố gắng thay đổi màu nền thành màu nền mặc định khi tôi nhấp ra ngoài hộp nhập liệu. Tôi đã thử sử dụng "null" hoặc "none" nhưng không có tác dụng? window.addEventListener('nhấp chuột', outsideClick);
Tôi đang viết một ứng dụng yêu cầu người dùng chọn nhiều loại tệp khác nhau trên điện thoại của họ. Tôi sử dụng mã này để khởi chạy trình chọn tệp Intent: Intent intent = new Intent(Intent.ACTION_GET_C
Trong Android, sự khác biệt giữa bộ nhớ ngoài không thể tháo rời (bộ nhớ trong) và bộ nhớ trong là gì? Tôi không biết nên lưu dữ liệu của mình ở đâu. Tôi chỉ cần lưu số liệu thống kê trò chơi mà một người có thể kéo lên bất cứ lúc nào. Cảm ơn vì câu trả lời hay nhất. Trong nhiều thiết bị mới hơn, sẽ không còn sự phân biệt vật lý nữa,
Trong C++, giả sử chúng ta có tệp tiêu đề này: myglobals.h #ifndef my_globals_h #define my_globals_h int monthsInYear = 12; #en
Tôi đang cố gắng giao tiếp với Ada bằng C++ bằng cách sử dụng extern. Sự khác biệt giữa hai cách triển khai này là gì? Triển khai Không gian tên Ada { extern "C" { int getN
Câu hỏi này đã có câu trả lời tại đây: Lấy mã HTML bên ngoài của phần tử đã chọn (30 câu trả lời) Đã đóng 2 năm trước. Hãy tưởng tượng chúng ta có thứ gì đó như thế này: Xin chào thế giới Nếu chúng ta
Giả sử tôi có điều này ở đầu mô-đun của mình: Public Declare Function getCustomerDetails Lib "CustomerFunctions" () Miễn là tôi chạy điều này từ VB6
Tôi hiện đang sử dụng mã này: var wordRandomizer = { run: function (targetElem) { var markup = this.creat
Chúng tôi đang thử nghiệm với SVN và sử dụng Beanstalk làm máy chủ. Thiết lập của chúng tôi trông như thế này: Kho lưu trữ: ModulesModule OneModule TwoModule Three Kho lưu trữ: Website 1 Mã trang web tùy chỉnh svn: Tham chiếu bên ngoài đến Module 1 svn: Tham chiếu bên ngoài đến Module 3
Có cách nào để thiết lập IP ngoài tự động trong bộ cân bằng tải được gán cho các dịch vụ như Google không? Tôi đang chạy Kubernetes trên máy chủ riêng. Cảm ơn Câu trả lời hay nhất Sử dụng dịch vụ kiểu nodePort, nó sẽ liên kết dịch vụ của bạn với tất cả các nút
Có thể sử dụng phương thức generateUrl() bên ngoài Controller không? Tôi đã thử sử dụng nó trong lớp kho lưu trữ tùy chỉnh với $this->get('router') nhưng không hiệu quả. Cập nhật Tôi tìm thấy một cái ở đây
Hiện tại tôi đang cố gắng cải thiện thời gian xây dựng của mình bằng cách đưa các phụ thuộc Angular ra bên ngoài thông qua Webpack externals. Cho đến nay tôi đã đạt được điều này với React và các thư viện nhỏ khác. Nếu tôi chỉ di chuyển '@angular/compil
Tôi muốn tạo một plugin tự động áp dụng các plugin khác (plugin ngoài). Điều này yêu cầu phải thiết lập các phụ thuộc của tập lệnh xây dựng cho plugin trước khi tôi gọi "Áp dụng plugin". Nhưng có vẻ như tôi không thể thêm các phụ thuộc buildscript vào plugin của mình hoặc tôi nhận được: Bạn không thể thay đổi
Tôi là người tạo ra gói R EnvStats. Có một hàm tôi sử dụng rất nhiều có tên là stripChart. Tôi vừa mới bắt đầu học ggplot2 và đã dành vài ngày qua để nghiên cứu kỹ lưỡng sách của Hadley, sách của Winston, sách của Stack và nhiều sách khác.
Tôi là một lập trình viên xuất sắc, rất giỏi!